在IT界,需要大量的javascript开发者。如果这个角色能够最佳地展现你的能力,那么你有许多机会换家公司,以及提高薪水。但是在你被公司录取之前,你需要展现你的技术,以便通过面试环节。在这篇文章中,我会展示你五个典型的问题。
问题1: 范围(Scope)
思考以下代码:
(function() { var a = b = 5;})();console.log(b);
控制台(console)会打印出什么?
答案
上述代码会打印出 5
。
这个问题的陷阱就是,在立即执行函数表达式(IIFE)中,有两个命名,但是其中变量是通过关键词 var
来声明的。这就意味着 a
是这个函数的本地变量。与此相反,b
是属于这个函数的全局变量的。
这个问题另一个陷阱就是,在函数中他没有使用 "严格模式" ( 'use strict';
)。如果 严格模式 开启,那么代码就会报出未捕获引用错误(Uncaught ReferenceError):b没有定义。记住严格模式要求,如果这个是预期的行为,你需要明确地引用全局变量,。因此,你需要像下面这么写:
(