7道简单的 JavaScript 面试题,三个月没招到一个人

如果你符合JavaScript高级开发人员的资格,在编码面试中很有可能会被问到一些刁钻的问题。

我知道这不公平。一些不知名的人把你放在角落上下打量,似乎想看你是什么做成的。这是一次不愉快的经历。

你能做什么?

遵循这个建议:“熟能生巧”。通过投入足够的时间,更好地定期深入了解JavaScript,将改善你的编码,并顺便提高你的面试技巧。

在这篇文章中,你会发现7个乍一看很简单,但实际上很棘手的JavaScript面试题。

虽然一开始这些问题看起来是随机的,但是它们试图与JavaScript的重要概念挂钩。所以你最好在下次面试前练习一下!

1. 意外的全局变量

问题

在以下代码中,typeof atypeof b的值分别是什么:

答案

让我们仔细看看第2行:let a = b = 0。这个语句确实声明了一个局部变量a。但是,它确实声明了一个全局变量b

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

b是一个偶然创建的全局变量。

在浏览器中,上述代码片段相当于:

2. 数组 length 属性

 

因为 length的这种行为,当JavaScript执行clothes.length = 0 时,数组 clothes 中的所有项都被删除了。

clothes[0] 是undefined,因为 clothes 数组被清空了。

答案

让我们仔细看看出现在左花括号{前面的分号; :

很容易忽略这个分号,而它创建了一个空语句。空语句是不做任何事情的语句。

for() 在空语句(什么也不做)上循环了 4 次,忽略了实际上往数组里添加元素的代码块{ numbers.push(i + 1); }

上述代码等同于:

for()递增变量i直到4。然后JavaScript 进入代码块 { numbers.push(i + 1); },将4 + 1 添加 到numbers数组中。

这样 numbers 就是 [5].

更多Java精讲

 

 4. 自动插入分号

 

 

 

 

查看Java精讲 获取更多

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值