WEB前端技术核心:JaveScript学习之旅(立即执行函数小知识点剖析2)

在了解立即执行函数之前,应该需要了解几个关于函数的概念。1:函数声明;2:函数表达式;3:匿名函数。

function  testA(){

};此为函数声明;

var  testA = function (){

};用定义变量的写法来写,这句话意思是定义一个函数,赋值于testA,这叫函数表达式;

function  (){

};声明了函数,但是没有取名,此为匿名函数。

现在回到立即执行函数的概念。

立即执行函数常见两种写法:

1: (function (){

}() );

2:(function (){

} )();

两种中写法中()的作用就是立即执行符号,通过这个联想到正常写法和立即执行函数写法的区别。

因为javascript会对你写的函数模块进行预编译过程,如果写的是正常的函数声明,在当前环境下,此函数会被整体提升,而函数表达式属于赋值于变量,变量在这个预编译过程中仅仅变量名提升,后面的值不会提升,只有等待代码一行一行解析到它,这是函数表达式和函数函数声明的不同。

更重要的一点,函数声明只能通过函数名调用,而函数表达式可以通过后面加()立即执行此函数。

1:var a = function(){

  console.log(‘abc’)

};

2:var a = function(){

  console.log(‘abc’)

}();

以上两种写法中1仅仅给变量a赋值,赋予了一个函数表达式,且此函数表达式未被执行;2中在函数结尾加了执行符号,则此函数表达式立即执行,且所有能被执行符号执行的表达式,就放弃了这个函数了,是无法通过函数名调用内容的,例如上述例子中,如若给函数定义一个名称,且加了执行符号,会打印出abc,但是无法通过这个名称来执行函数了。

你可能感兴趣的:(WEB前端技术核心:JaveScript学习之旅(立即执行函数小知识点剖析2))