在 JavaScript 中,变量声明和函数声明会被引擎隐式地提升到当前作用域的顶部。
如:
输出的结果会是:undefined. 而不是 1。
这就是因为变量 b 的声明被提前了,typeof 操作符操作的变量不是全局变量 b;而是待赋值的局部变量 b。
同理,函数的声明也如此:
但是直接定义的话就不会为 undefined。
附上两道据说2014年阿狸笔试题:
在 JavaScript 中,变量声明和函数声明会被引擎隐式地提升到当前作用域的顶部。
如:
输出的结果会是:undefined. 而不是 1。
这就是因为变量 b 的声明被提前了,typeof 操作符操作的变量不是全局变量 b;而是待赋值的局部变量 b。
同理,函数的声明也如此:
但是直接定义的话就不会为 undefined。
附上两道据说2014年阿狸笔试题: