• 立即执行函数表达式


    参考链接:

    https://my.oschina.net/u/2331760/blog/468672?p=%7B%7BcurrentPage+1%7D%7D

    搞清楚 函数声明,函数表达式,匿名函数的关系

    相关声明方式:

    <script>
            //匿名函数第1种方式  强制运算符() 使函数调用执行
            (function (a, b) {
                console.log("第1种方式" + (a + b));
            })(3, 4);
            //匿名函数第2种方式  第一个()返回函数引用 第二个()调用函数
            (function (a, b) { console.log("第2种方式" + (a + b)); }(3, 4));
            //匿名函数第3种方式  使用void
            void function (a, b) {
                console.log("第3种方式" + (a + b));
            }(3, 4);
            //匿名函数第4种方式 使用+/- 使用操作符将函数连接为表达式
            +function (a, b) {
                console.log("第4-1种方式" + (a + b));
            }(3, 4);
            -function (a, b) {
                console.log("第4-2种方式" + (a + b));
            }(3, 4);
            ////这两种 报错奥
            //++function (a, b) {
            //    console.log("第4-3种方式");
            //}(3, 4);
            ////这两种 报错奥
            //--function (a, b) {
            //    console.log("第4-4种方式");
            //}(3, 4);
            //匿名函数第5种方式 使用~
            ~function (a, b) {
                console.log("第5种方式" + (a+b));
            }(3, 4);
    
            //匿名函数第6种方式 使用[]包裹
            [function (a, b) {
                console.log("第6种方式" + (a + b));
            }(3, 4)];
    
            //匿名函数第7种方式 匿名函数前加 typeof
            typeof function (a, b) {
                console.log("第7种方式" + (a + b));
            }(3, 4);
    
            //匿名函数第8种方式 匿名函数前加 delete
            delete function (a, b) {
                console.log("第8种方式" + (a + b));
            }(3, 4);
        </script>
    
        <script>
            fnName();
            function fnName(){};
     
            fnName();
            var fnName=function(){
                
                }//报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后   这个不会报错,不知道作者为啥这样描述
    
            var fnName=function(){
                alert('Hello World');
            }();//函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数
    
            function fnName(){
                alert('Hello World');
            }();
            //语法错误,Uncaught SyntaxError: Unexpected token ),这个函数会被js引擎解析为两部分:
            //1.函数声明 function fnName(){ alert('Hello World'); } 
            //2.分组表达式 () 但是第二部分作为分组表达式语法出现了错误,因为括号内没有表达式,把“()”改为“(1)”就不会报错
            //但是这么做没有任何意义,只不过不会报错,分组表达式请见:
            //分组中的函数表达式http://www.nowamagic.net/librarys/veda/detail/1664
    
            function(){
                console.log('Hello World');    
            }();//语法错误,Uncaught SyntaxError: Unexpected token (
        </script>
  • 相关阅读:
    jar命令打jar包
    kafka的一些参数
    fastdfs-nginx-module-master的一些奇怪的特点
    nginx 禁止恶意域名解析
    tcpdump抓包vrrp
    gitlab提交代码
    [Data]Segment Tree
    [Data]FHQ treap
    [Data]带修改的主席树[树状数组套主席树]
    [Data]可持久化线段树-主席树
  • 原文地址:https://www.cnblogs.com/niuge/p/6841549.html
Copyright © 2020-2023  润新知