因为 JavaScript 是一门很小的语言,但却具有令人难以置信的复杂性,因此您应该能够提出相对基本的问题,并根据他们的答案来了解它们是否真的那么好。例如,我衡量面试其余部分的标准第一个问题是:
在 JavaScript 中,有什么区别var x = 1
and x = 1
?根据您的感觉,尽可能详细或尽可能详细地回答。
JS 新手程序员might对本地人与全球人有一个基本的答案。中级 JS 人员肯定应该有这个答案,并且可能应该提到函数级范围。任何自称为“高级”JS 程序员的人都应该准备好谈论局部变量、隐含全局变量、window
对象、函数作用域、声明提升和作用域链。此外,我很想听听[[DontDelete]]
,提升优先级(参数 vsvar
vs function
), and undefined
.
另一个好问题是要求他们写一个sum()
接受任意数量的参数并返回它们的总和的函数。然后,要求他们使用该函数(无需修改)对数组中的所有值求和。他们应该编写一个如下所示的函数:
function sum() {
var i, l, result = 0;
for (i = 0, l = arguments.length; i < l; i++) {
result += arguments[i];
}
return result;
}
sum(1,2,3); // 6
他们应该像这样在你的数组上调用它(上下文apply
可以是任何东西,我通常使用null
在这种情况下):
var data = [1,2,3];
sum.apply(null, data); // 6
如果他们得到了这些答案,他们可能就知道 JavaScript 了。然后你应该继续向他们询问非 JS 特定的东西,比如测试、工作流程、版本控制等,看看他们是否是一个好的人。程序员.