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 */ }() // 带参数
    
  • 相关阅读:
    JDBC
    Ajax:一种不用刷新整个页面便可与服务器通讯的办法
    Maven——自动化构建工具
    SSM整合
    MyBatis框架
    SpringMVC框架、Spring boot框架、SSM區別
    Spring开源框架
    切入点表达式
    面向切面编程之cglib代理方式
    动态JDK代理方式-实现类增强
  • 原文地址:https://www.cnblogs.com/cag2050/p/6783121.html
Copyright © 2011-2022 走看看