码迷,mamicode.com
首页 > 编程语言 > 详细

【转】典型的JavaScript面试题

时间:2017-05-21 10:50:03      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:target   code   and   陷阱   面试   使用   另一个   代码   script   

问题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面试题

标签:target   code   and   陷阱   面试   使用   另一个   代码   script   

原文地址:http://www.cnblogs.com/jongsuk0214/p/6884023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!