• js立即执行函数


     

    一、立即执行函数方式

    js立即执行函数可以让你的函数在创建后立即执行,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。

    方式1、最前最后加括号

    (function(){alert(1);}());

    方式2、function外面加括号

    (function(){alert(1);})();

    方式3、function前面加运算符,常见的是!与void

    !function(){alert(1);}(); void function(){alert(2);}();

    错误方式1:

    function(){ /* code */ }(); // SyntaxError: Unexpected token (

    因为在解析器解析全局的function或者function内部function关键字的时候,默认是认为function声明,而不是function表达式,如果你不显示告诉编译器,它默认会声明成一个缺少名字的function,并且抛出一个语法错误信息,因为function声明需要一个名字。

    错误方式2:

    但是如果你在括弧()里传入一个表达式,将不会有异常抛出
    // 但是foo函数依然不会执行

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

    // 因为它完全等价于下面这个代码,一个function声明后面,又声明了一个毫无关系的表达式:

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

    二、立即执行函数的参数

    1)可以给立即执行函数传递参数,例如

    (function(who, where) {
    
     console.log("I am" + who + " come from" + where);
    
    } ("Amy", "China"));

    注:通常你不应该给立即执行函数传递太多的函数,因为它很快会成为一个负担——为了理解代码是如何工作的,你不得不经常上下滚动源代码。

    2)有时我们会看到传入的参数是window, jQuery

    为什么要传入jquery

    jQuery 被应用在成千上万的 JavaScript 程序中,必须确保 jQuery 创建的变量不能和导入他的程序所使用的变量发生冲突。

    为什么要传入window

    通过传入 window 变量,使得 window 由全局变量变为局部变量,当在 jQuery 代码块中访问 window 时,不需要将作用域链回退到顶层作用域,这样可以更快的访问 window;这还不是关键所在,更重要的是,将 window 作为参数传入,可以在压缩代码时进行优化

     

     

     

     

  • 相关阅读:
    ontentEditable和designMode的区别
    execCommand、queryCommandState
    ios微信h5音频audio无法自动播放
    微信二次分享图片不显示
    Airbnb javascript编码规范
    array reduce
    适配iPhoneX全屏
    web前端性能优化
    requestAnimationFrame实现动画
    js 中的forEach,for in ,for of 的使用
  • 原文地址:https://www.cnblogs.com/wangdan0915/p/7852608.html
Copyright © 2020-2023  润新知