首页 > 代码库 > 【转】典型的JavaScript面试题
【转】典型的JavaScript面试题
问题1: 作用域(Scope)
1 (function() { 2 "use strict"; 3 var a = b = 5; 4 })(); 5 console.log(b);
控制台(console)会打印出什么?
答案:
上述代码会打印出5
。
这个问题的陷阱就是,在立即执行函数表达式(IIFE)中,有两个赋值,但是其中变量a
使用关键词var
来声明。这就意味着a
是这个函数的局部变量。与此相反,b
被分配给了全局作用域(译注:也就是全局变量)。
这个问题另一个陷阱就是,在函数中没有使用”严格模式” (‘use strict‘;
)。如果 严格模式开启,那么代码就会报错 ” Uncaught ReferenceError: b is not defined” 。请记住,如果这是预期的行为,严格模式要求你显式地引用全局作用域。所以,你需要像下面这么写:
1 (function () { 2 ‘use strict‘; 3 var a = b = 5; 4 }) (); 5 console.log(b);
自己注:严格模式下,火狐依然是输出5,而360浏览器才报错是” Uncaught ReferenceError: b is not defined”。
【转】典型的JavaScript面试题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。