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);