函数声明、函数表达式、立即执行函数、你不知道的javascript

#你不知道的javascript上卷(2)#

1、函数声明、函数表达式

// 例子一 函数声明
function foo () {
    var a = 3
    console.log(a) // 3
}
foo ()
// 例子二 函数表达式
(function foo () {
    var a = 3
    console.log(a)
})()

 函数声明和函数表达式之间最重要的区别是:他们之间的标识符会绑定在何处

第一个片段中foo被绑定在所在作用域中,可以通过foo()来调用它

第二个片段中foo被绑定在函数表达式自身的函数中而不是所在作用域中

即:(function foo() {...})作为函数表达式意味着foo只能在...所代表的的位置中被访问,外部则不行。foo变量名被隐藏在自身中意味着不会非必要地污染爱外部作用域

2、匿名表达式

setTimeout ( function() {
    console.log(I wait 1 second)
}, 1000)

匿名表达式:因为函数function()...没有标识符,函数表达式可以是匿名的,但是函数声明不能是匿名,在javascript中函数声明要是匿名的话会报错 

3、具名表达式

(function foo () {
    var a = 3
    console.log( a ) //3
})()

(function foo() { })() 立即执行函数表达式   第一个()把函数变成了表达式, 第二个()执行了这个函数

扫描二维码关注公众号,回复: 4344143 查看本文章

猜你喜欢

转载自blog.csdn.net/zhumizhumi/article/details/83897073