5个JavaScript经典面试题
1:Scope作用范围
(function(){
vara=b=5;
})();
console.log(b);
什么会被打印在控制台上?
回答
上面的代码会打印5。
这个问题的诀窍是,这里有两个变量声明,但a使用关键字var声明的。代表它是一个函数的局部变量。与此相反,b变成了全局变量。
这个问题的另一个诀窍是,它没有使用严格模式(‘usestrict';)。如果启用了严格模式,代码就会引发ReferenceError的错误:B没有定义(bisnotdefined)。请记住,严格模式,则需要明确指定,才能实现全局变量声明。比如,你应该写:
(function(){
'usestrict';
vara=window.b=5;
})();
console.log(b);