七个简单但棘手的 JS 面试问题[每日前端夜话0xD4]

七个简单但棘手的 JS 面试问题[每日前端夜话0xD4]

疯狂的技术宅 前端先锋

每日前端夜话0xD4
每日前端夜话,陪你聊前端。
每天晚上18:00准时推送。
正文共:1952 字
预计阅读时间:10 分钟
作者:Patricia Neil
翻译:疯狂的技术宅
来源:dmitripavlutin

七个简单但棘手的 JS 面试问题[每日前端夜话0xD4]
在软件开发中,我认为最需要注意的是:

  1. 编码面试
  2. 有毒的主管或猪队友
    不是 JavaScript,this,CSS,IE 浏览器,而是上述两点!

如果你参加 JavaScript 高级开发面试,那么很有可能在编码面试中被问到一些棘手的问题。

我知道这是不公平的。一些不知名的人将你放在一边来审视你。这并不是令人愉快的经历。

七个简单但棘手的 JS 面试问题[每日前端夜话0xD4]
求职面试
你能做些什么?
请遵循以下建议:“通过实践变得完美”。通过投入足够的时间(最好地定期进行)来深入了解 JavaScript,可以改善你的编码,并且作为积极的结果,可以改善面试技巧。

在本文中,你将发现 7 个简单而又棘手的 JavaScript 面试问题。

尽管这些问题看上去似乎比较随意,但它们涉及了 JavaScript 的重要概念。所以你最好在下次面试之前进行练习!

1. 意外的全局变量


问题

在以下代码段中, typeof a 和 typeof b 的评估结果是什么:


1function foo() {
2  let a = b = 0;
3  a++;
4  return a;
5}
6
7foo();
8typeof a; // => ???
9typeof b; // => ???

答案

让我们仔细看看第2行:let a = b = 0。该语句声明了局部变量 a。但同时它也声明了 全局 变量 b。

在 foo() 或全局作用域中都没有声明变量 b。因此,JavaScript 将 b = 0 表达式解释为 window.b = 0。

七个简单但棘手的 JS 面试问题[每日前端夜话0xD4]
意外的全局变量JavaScript
b 是意外创建的全局变量。

在浏览器中,以上代码片段等效于:


1const clothes = ['jacket', 't-shirt'];
2clothes.length = 0;
3
4clothes[0]; // => ???

typeof a 是 'undefined'。变量 a 仅在 foo() 作用域内部声明,而在作用域外部中不可用。

typeof b 的结果为 'number'。b 是值为 0 的全局变量。

2. 数组长度属性


问题

clothes[0] 的值是什么:


1const clothes = ['jacket', 't-shirt'];
2clothes.length = 0;
3
4clothes[0]; // => ???

答案

数组对象的 length 属性具有特殊行为(http://www.ecma-international.org/ecma-262/6.0/#sec-properties-of-array-instances-length):

上一篇:前端--js基础


下一篇:sql的优化