js中var变量提升的问题:
这是因为JavaScript的Hoisting 这一默认行为。
Hoisting 是 JavaScript 将所有声明提升到当前作用域顶部的默认行为(提升到当前脚本或当前函数的顶部)。
所以var只是将变量声明提到了前面,赋值并不一起操作
例如:
console.log(a);
var a = 2;
打印结果: undefined
因为代码可理解为:
var a;
console.log(a);
a = 2
如果在函数中:
var name = 'World!';
(function ( ) {
if (typeof name ==='undefined') {
var name = 'Jack';
console.log('Goodbye '+name);
} else {
console.log('Hello '+ name);
}
})();
代码等同:
var name = 'World!';
(function ( ) {
var name;
if (typeof name ==='undefined') {
name = 'Jack';
console.log('Goodbye '+ name);
} else {
console.log('Hello '+ name);
}
})();
// 打印结果则是: GoodbyeJack