函数声明 VS 函数表达式
Javascript中的函数声明和函数表达式
命名函数表达式探秘
console.log(foo) // function foo() {} 函数声明提升
console.log(bar) // undefined 变量声明提升 赋值不会提升
try {
console.log(bar_fn)
} catch(err) {
console.log('Uncaught ReferenceError: bar_fn is not defined')
}
// 函数声明
function foo() {}
// 函数表达式
var bar = function bar_fn() {}
console.log(foo) // function foo() {}
console.log(bar) // function bar_fn() {}
try {
console.log(bar_fn)
} catch(err) {
console.log('Uncaught ReferenceError: bar_fn is not defined')
}
// JavaScript不允许在函数声明的后面直接使用小括号,而函数表达式则没有这个限制
// ~ ! + - 可以让词法解析器把后面看成是函数表达式
// bootstrap就这么干啊 干
+function() {
console.log('hello world')
}()