zoukankan      html  css  js  c++  java
  • js 里面的 function 与 Function

    function 是 js 的标识符

    Function 是 js 里面的一个 构造函数

    1、new function 与 new Function 的区别

      new 运算符在 js 里面是 创建一个自定义的对象的实例 或者是 一个具有构造函数的本地对象的实例。

        语法:new constructor [ ( [ arguments ] ) ]

      new function() {......} 初始化一个可操作对象,相当于 new function 匿名函数() {......}

      

      new Function('参数', '函数体') 是实例化一个函数,相当于 function 函数名() {......}

      

    2、立即执行函数 ( function(){...} () ) 和 ( function(){...} )()

    // 1、
    // 定义一个命名函数 a 并调用,正常运行
    function a(){}a()
    // 2、
    // 2 假设使用匿名函数的方式呢?
    function (){}() 
    //这种方式会报错:Uncaught SyntaxError: Unexpected token (
    // 3、
    //按到如上思路测试,寻找 2 报错的原因
    function () {}
    // 3 会报错,与 2 报错相同:Uncaught SyntaxError: Unexpected token (
    // 4、
    ();
    // 4 会报错:Uncaught SyntaxError: Unexpected token )
    // 5、
    (1);
    // 5 不会报错正常运行
    // 6、
    (function(){});
    // 6 不会报错正常运行

    可以看出,上述现象报错的原因都是:语法错误。究其原因发现是因为 ()运算符 的优先级高于 函数调用,而 () 运算符的括号内必须有表达式,否则就会有语法错误。

    因此可以用 (function(){})() 的形式定义一个自调用的匿名函数

    //1、
    (1+2)(5+6);
    //在进行如上表达式运算的时候,会报错:Uncaught TypeError: 3 is not a function,也就是说如果第一个表达式是一个 function 的话,就会正常运行。
    //2、所以在保证整个运算为表达式运算的情况下,第一个子表达式为 function,则得出如下写法
    (function(){}());
    // 2 正常运行不会报错
    // 3、因此可以得出如下写法也都是正确的
    !function(){};
    +function(){};
    -function(){};
    ~function(){};
    ......
  • 相关阅读:
    SEO常用外链资源站整理分享
    不同的LINUX系统,跨服务器快速拷贝文件
    WPS表格、Excel常用技巧大全,99%人都不知道,但非常实用!
    php 5.4中php-fpm 的重启、终止操作命令
    帝国CMS伪静态
    Centos7访问Win7/Win10系统中的共享文件
    H3C S5500三层交换机划分Vlan与H3C路由组网
    H3C S5500V2交换机误格式化恢复
    linux_centos7_时间更新
    Centos7安装mysql数据库
  • 原文地址:https://www.cnblogs.com/z-one/p/8554384.html
Copyright © 2011-2022 走看看