美文网首页
js立即执行函数理解

js立即执行函数理解

作者: 奋斗live | 来源:发表于2020-01-14 16:11 被阅读0次

通过立即函数可以创建一个独立的作用域。这个作用域中的变量,外面访问不到。比如你参与了一个多人协作一起开发的项目,你定义的一些变量,不小心被别人同名的变量给覆盖掉了,这样就可以使用这个立即执行函数来整一个自己的私用作用域,防止与外部的变量的发生冲突。比如jquery框架就是如此,防止jquery创建的变量与导入它的程序所使用的变量发生冲突。

有一道著名的题目:

var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
 liList[i].onclick = function(){
   alert(i) // 为什么 alert 出来的总是 6,而不是 0、1、2、3、4、5
 }
}

可以使用立即执行函数创建独立作用域来解决


var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
  !function(j){
    liList[j].onclick = function(){
      alert(j) // 0、1、2、3、4、5
    }
  }(i)
}

接下来,我们来看看下立即执行函数是如何进行使用的。

一、普通函数

1、比如我们常见的函数声明

function cat(){
  var age=45;
 console.log("this is cat");
}

2、匿名函数表达式(赋值给一个变量)

var animal = function(){
  var age=45;
  console.log("this is cat");
}

以上就是我们常见的函数声明和使用

二、立即执行函数

立即函数常见形式如下:

( function(){…} )()

( function (){…} () )

如下代码执行

<script>
    (function (a) {
        age = 111;
        console.log(a);
        console.log(age);
    })(1234)
</script>

则如下输出


image.png

注意:这不算是函数声明,所谓立即,就是可以立即执行的意思,里面的函数表达式可以立即被javascript引擎所执行
我们再来看看其他立即执行函数的用法,如下

测试
<script>
    (function (num) {
        age = 111;
        console.log(num);
    })(1234)
    console.log("-------1111--------");
    (function (num) {
        age = 111;
        console.log(num);
    }(1234))
    console.log("-------2222--------");

    !function (num) {
        console.log(num);
    }(1234)
    console.log("-------3333--------");
    +function (num) {
        console.log(num);
    }(1234)
    console.log("-------4444--------");
    -function (num) {
        console.log(num);
    }(1234)
    console.log("-------5555--------");
    var test = function (num) {
        console.log(num);
    }(1234)
</script>

输出如下


image.png

这些!、+、-、=等运算符都能让它们起到立即执行的作用,使函数声明直接转换成了函数表达式,帮助javascript引擎识别它们,告诉引擎,这些是函数表达式,不是函数声明。

相关文章

  • Js立即执行函数

    js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,...

  • js立即执行函数

    js中(function(){...})()立即执行函数写法理解 转自segmentfault chichttps...

  • js立即执行函数理解

    通过立即函数可以创建一个独立的作用域。这个作用域中的变量,外面访问不到。比如你参与了一个多人协作一起开发的项目,你...

  • js立即执行函数

    本文导读:js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立...

  • js模块化之路(1):手写js组件

    阅读前需要具备js基础(this,js原型链,继承,立即执行函数等) 关键点:1.通过立即执行函数,来达到隐藏细节...

  • js立即执行函数

    1.什么是立即执行函数只有表达式才可以被()符号执行。在了解立即执行函数之前先明确一下函数声明、函数表达式及匿名函...

  • JS立即执行函数

    很多时候我们在js中定义一个函数后,只需要执行该函数一次,比如数据初始化函数;这种情况下,定义一个函数就会浪费...

  • JS 立即执行函数

    定义方式一 定义方式二

  • JS立即执行函数

    ( function(){…} )()和( function (){…} () )是两种javascript立即执...

  • JS: 立即执行函数

    在讨论前端的时候,我们总能听到立即执行函数。我第一次听到这个名字的时候总以为很高大上,每次都想以后有机会好好学一下...

网友评论

      本文标题:js立即执行函数理解

      本文链接:https://www.haomeiwen.com/subject/upkaactx.html