// 函数定义:函数声明和函数表达式
// 函数声明式:function a () {}
// 函数表达式:var a = function () {}
var a = function b () {
// 可以在方法体内访问b和a,
// 不可以在方法体外访问b
// 可以在方法体外访问a
}
a() // 输出: undefined
b() // 输出: ReferenceError: b is not defined
这是因为函数名和函数赋值的变量不同,函数名只能在方法体内被访问,变量有其作用域。
函数声明时,默认会创建一个与函数名相同的变量。如不指定函数名,则为匿名函数
另外:函数声明式会声明提升,函数表达式不会声明提升
eg:
a()
function a () {console.log('1111')}
// 输出:1111
a()
let a = function () {console.log('1111')}
// 输出: Uncaught ReferenceError: a is not defined