zoukankan      html  css  js  c++  java
  • 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 作为参数传入,可以在压缩代码时进行优化

     

     

     

     

  • 相关阅读:
    命令行参数解析
    业务
    从0开始架构二
    从0开始架构读书笔记
    增加ldl
    工具论
    go的web框架的context回调的原理
    id生成器雪花算法和雪花算法的sony实现
    软件架构师应该知道的97件事(六)
    进程通信简介
  • 原文地址:https://www.cnblogs.com/wangdan0915/p/7852608.html
Copyright © 2011-2022 走看看