#你不知道的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 查看本文章