zoukankan      html  css  js  c++  java
  • 立即执行函数

    • 参考:https://zhuanlan.zhihu.com/p/22465092

    • 立即执行函数 作用:
      创建一个独立的作用域。这个作用域里面的变量,外面访问不到(即避免「变量污染」)。

    (function(){ /* code */ }());
    

    为什么这样就能立即执行并且不报错呢?因为在javascript里,括号内部不能包含语句,当解析器对代码进行解释的时候,先碰到了(),然后碰到function关键字就会自动将()里面的代码识别为函数表达式而不是函数声明。
    而立即执行函数并非只有上面的一种写法,写法真是五花八门:

    // 最常用的两种写法
    (function(){ /* code */ }()); // 老道推荐写法
    (function(){ /* code */ })(); // 当然这种也可以
     
    // 括号和JS的一些操作符(如 = && || ,等)可以在函数表达式和函数声明上消除歧义
    // 如下代码中,解析器已经知道一个是表达式了,于是也会把另一个默认为表达式
    // 但是两者交换则会报错
    var i = function(){ return 10; }();
    true && function(){ /* code */ }();
    0, function(){ /* code */ }();
     
    // 如果你不怕代码晦涩难读,也可以选择一元运算符
    !function(){ /* code */ }();
    ~function(){ /* code */ }();
    -function(){ /* code */ }();
    +function(){ /* code */ }();
     
    // 你也可以这样
    new function(){ /* code */ }
    new function(){ /* code */ }() // 带参数
    
  • 相关阅读:
    centos7 yum错误相关
    centos7 jenkins
    vim 常用命令
    Effective STL(第7条)
    【hihoCoder】1049.后序遍历
    C++ 单元测试 Cpputest
    【hihoCoder】1041. 国庆出游
    LeetCode(43. Multiply Strings)
    【LeetCode】16. 4Sum
    【LeetCode】1. Two Sum
  • 原文地址:https://www.cnblogs.com/cag2050/p/6783121.html
Copyright © 2011-2022 走看看