美文网首页
理解JS立即执行函数调用原理

理解JS立即执行函数调用原理

作者: 8d2855a6c5d0 | 来源:发表于2017-06-22 19:25 被阅读0次

函数的两种定义方法:
函数声明

function fn1(){
      console.log('函数声明');
}

函数表达式

var fn2 = function(){
     console.log('函数表达式');
};

函数包括四个部分,function关键字、函数名、圆括号、花括号。
期中函数名称可以省略 ,此时函数被称为匿名函数
当这种写法出现在表达式,又称为函数 表达式

函数可以出现在任何允许表达式出现的地方 ---《javaScript语言精粹》

这两种定义函数的方法有什么区别呢?看看以下的对比:

//函数调用放置在声明函数之前,函数能够被正常调用
fn1()
function fn1(){
    console.log('函数声明')
}  //函数声明

//函数调用放置在函数表达式之前,结果出现报警
fn1()
var fn1 = function(){
    console.log('函数表达式')
}  //Uncaught TypeError: fn1 is not a function(…)

根据JavaScript的解析方式,先扫描一遍整个js部分,将函数声明提升至最前方(函数声明是一等公民),而函数表达式则只有在解析到其所在位置时才会被解析

根据这个情况,函数声明实际上实在其函数调用前解析的,所以它能够被正常调用
再看看下面的对比:

//函数声明后跟一对圆括号无法调用
function fn1(){
    console.log('函数声明')
}()  //Uncaught SyntaxError: Unexpected token ((…)

//函数表达式后跟一对圆括号可以立即调用
var fn1 = function(){
    console.log('函数表达式')
}()  //函数表达式

由以上对比可以知道,函数以表达式情况出现时,可以以后面加一对圆括号的方式立即调用
所以我们常见的这种立即调用的方法,实际上可以看成将匿名函数转换成了函数表达式,随后立即调用

//以下是调试台的调试结果,利用这些运算符可以将函数转换成表达式形式
//这些可以实现立即调用,而剩余符号会导致报错
//不过其余的运算符会出现将函数返回值进行运算的情况,所以常用括号

(function(){console.log('OK')})()
//OK
//undefined

+function(){console.log('OK')}()
//OK
//NaN

-function(){console.log('OK')}()
//OK
//NaN

~function(){console.log('OK')}()
//OK
//-1

!function(){console.log('OK')}()
//OK
//true

相关文章

  • 理解JS立即执行函数调用原理

    函数的两种定义方法:函数声明 函数表达式 函数包括四个部分,function关键字、函数名、圆括号、花括号。期中函...

  • JavaScript立即执行函数(IIFE)

    注:此文只在理解立即执行函数,文章大量引用立即调用的函数表达式,javascript立即执行某个函数:插件中fun...

  • JS基础 -- 立即执行函数

    /** 立即执行函数* 函数定义完,立即被调用,这种函数焦作立即执行函数* 立即执行函数往往只会执行一次** ...

  • 【JS】匿名函数

    本节讲解 3 种原生JS的匿名函数。 匿名函数又叫立即执行函数。 因为是匿名的,所以不能被调用。 因为不能被调用,...

  • Js立即执行函数

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

  • js立即执行函数

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

  • js立即执行函数理解

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

  • 简单了解JS自执行函数

    1、常见的function写法如下: 2、自执行函数 自执行函数也叫立即调用函数。在函数体后面加括号就能立即调用,...

  • js立即执行函数

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

  • 复习笔记之API(14)

    立即执行函数 立即执行函数:不需要调用,立马能够自己执行的函数作用:创建一个独立作用域,立即执行函数里面所有的变量...

网友评论

      本文标题:理解JS立即执行函数调用原理

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