🔥 遇到拒绝前请先回答10个javaScript问题❌

这里有 10 个令人困惑的问题,每个问题都附有一段代码。为了增强您的学习体验,答案隐藏在 `{% 详细信息 💣 显示 %}` 标签中 — 单击“显示”即可发现它们。让我们开始吧!🚀

每答对一题可得 10 分。你的分数是多少?👀

评论下来。

1. 以下代码的输出是什么?

console.log(0.1 + 0.2 === 0.3);

揭示

这是由于 JavaScript 中的浮点精度错误造成的。表达式 `` 导致 ``,它并不严格等于 ``。

2. 以下代码输出什么?

(function() {
  var a = b = 5;
})();
console.log(b);

揭示

在此代码中,`` 被分配到全局范围,因为 `` 仅适用于 ``。因此, `` 成为一个全局变量,可在函数外部访问。

3. 这段代码的输出是什么?

console.log(typeof null);

揭示

这是 JavaScript 中一个众所周知的错误。`` 运算符对 `` 返回 ``,尽管 `` 实际上不是一个对象。

4. 以下代码打印什么?

console.log([] + []);
console.log([] + {});
console.log({} + []);
console.log({} + {});

揭示

这些结果是由于类型强制和 JavaScript 处理不同类型的加法运算符的方式造成的。

5. 以下代码的输出是什么?

console.log(1 < 2 < 3);
console.log(3 > 2 > 1);

揭示

第一个表达式的计算结果为 ``,因为 `` 是 ``,并且 `` 也是 ``。第二个表达式的计算结果为 ``,因为 `` 是 ``,并且 `` 是 ``。

6. 以下代码输出什么?

console.log(typeof NaN);

揭示

在 JavaScript 中,“(非数字)”被视为数字类型。

7. 这段代码的输出是什么?

let a = [1, 2, 3];
let b = [1, 2, 3];
console.log(a == b);
console.log(a === b);

揭示

在 JavaScript 中,数组是通过引用而不是值进行比较的。由于 `` 和 `` 是内存中的两个不同对象,因此两次比较都会返回 ``。

8. 下面的代码打印什么?

console.log('5' - 3);
console.log('5' + 3);

揭示

减法运算符将字符串 `` 转换为数字,结果为 ``。加法运算符将字符串 `` 和数字 `` 连接起来,结果为 ``。

9. 以下代码的输出是什么?

console.log(0 == false);
console.log(0 === false);

揭示

`` 运算符执行类型强制转换,因此 `` 被认为等于 ``。`` 运算符检查值和类型,因此 `` 和 `` 并不严格相等。

10. 以下代码输出什么?

(function() {
  console.log(1);
  setTimeout(function(){ console.log(2) }, 1000);
  setTimeout(function(){ console.log(3) }, 0);
  console.log(4);
})();

揭示

代码立即记录“和”。带有“延迟”的“被放置在事件队列中,并在清除当前堆栈后执行,因此接下来记录“。最后,带有“毫秒延迟”的“记录”。

这些问题深入探讨了 JavaScript 的怪癖和常见陷阱。了解它们将提高您的解决问题的能力,并为您准备技术面试。祝您编码愉快!🎉

如需更深入地了解 JavaScript 面试问题,请查看此综合资源。

对于类似 JavaScript 面试问题的直观演示,你可能会发现这个视频很有帮助:

你必须知道的 10 个 JavaScript 面试问题