你应该知道的 10 个 JavaScript 基本面试题 4 是误解。正确答案是 == 用强制类型转换检查值,而 === 不用强制类型转换检查值(严格相等)。

2025-06-07

你应该知道的 10 个 JavaScript 基本面试问题

4 是误解。正确答案是:==强制类型转换后检查值,===非强制类型转换后检查值(严格相等)。

本文特别适合那些正在寻找 JavaScript 开发职位的初学者。我搜索过很多 JavaScript 面试题,其中这 10 道对我来说最为重要。让我们深入探讨一下。

1.什么是Javascript?

Javascript 是一种用于 Web 开发的编程语言。JavaScript 在 Web 的客户端运行。

根据 MDN 的说法,JavaScript(通常缩写为 JS)是一种轻量级、解释型、面向对象、函数式编程语言,它最广为人知的是其网页脚本语言,但也在许多非浏览器环境中使用。它是一种基于原型、多范式的动态脚本语言,支持面向对象、命令式和函数式编程风格。

2.什么是DOM

DOM 代表文档对象模型 (DOM)。当网页加载时,浏览器会使用 HTML 和 CSS 文件创建 DOM。DOM 由节点和元素表示。您可以使用 JavaScript 操作 DOM。它是一种树状结构。

3. JS代码如何执行

这个问题在面试中回答起来有点大。不过我们可以简单说一下。JavaScript 在浏览器上运行。几乎每个浏览器都有一个 JavaScript 引擎。V8 是其中最受欢迎的。Chrome 使用的是 V8 引擎。而 Firefox 使用的是 Spider-Monkey 引擎。

4. == 和 === 的区别

简而言之,== 仅检查两个值是否相同。它不会检查这些值的类型。查看下面的代码:

if(2=="2"){
 console.log("true")
} else {
console.log("false")
}
Enter fullscreen mode Exit fullscreen mode

上述代码将输出 true。因为它将 2 和 "2" 视为相等,因为它没有检查类型。

相反,=== 会同时检查类型和质量。例如:

if(2==="2"){
 console.log("true")
} else {
console.log("false")
}
Enter fullscreen mode Exit fullscreen mode

这将输出 false。因为 2 和 "2" 的值相等,但它们的类型不同。

5. Null 与 Undefined

通常,null 表示空值,不存在,而 undefined 表示已声明但尚未定义。不过,你也可以显式地将 undefined 赋给变量。

var n;
console.log(typeof(n)); // undefined

var n = null;
console.log(typeof(n)); // object
Enter fullscreen mode Exit fullscreen mode

有趣的是,null 是 JS 中的对象类型。

6. Var、Let 和 Const

在 ES6 之前,var 是声明变量的唯一方法。但现在我们有了更多选择。

有一个术语叫作用域。作用域是指这些变量可以在什么地方使用。var 声明是全局作用域,或者函数/局部作用域。

Var 可以被提升,我们稍后会讨论。但现在 let 更适合用于变量声明。如果代码中不需要更改变量,可以使用 const。要了解两者的区别,您可以阅读以下文章,我发现它非常有用。

7. 提升

在 JavaScript 中,变量可以在声明之前使用。将变量和函数声明物理移动到代码顶部的概念称为提升。

console.log(num); // Returns undefined, as only declaration was hoisted, no initialization has happened at this stage
var num; // Declaration
num = 6; 
Enter fullscreen mode Exit fullscreen mode

那么 let 和 const 变量不会被提升吗?答案比这更复杂一些。在 JavaScript 中,所有声明(函数、var、let、const 和 class)都会被提升,而 var 声明会使用 undefined 进行初始化,而 let 和 const 声明则保持未初始化状态。

8. 全局与局部作用域

在 JavaScript 中,作用域分为两种:局部作用域和全局作用域。
在函数内声明的变量称为局部作用域,该变量无法在函数外访问。相反,在函数外声明的变量称为全局作用域,可以在函数内访问。

var genre= "superhero" //global scope
// code here can't use superhero but genre
function myFunction() {
  var superhero = "Batman"; // local scope

  // code here CAN use superhero and genre

}
Enter fullscreen mode Exit fullscreen mode

9. 结束

闭包使我们能够从内部函数访问外部函数的作用域。它可以通过在函数中返回另一个函数来创建。它为每个实例创建一个封闭的环境。例如:

function sum(x) {
  return function(y) {
    return x + y;
  };
}

var add5 = sum(5);
var add10 = sum(10);

console.log(add5(6));  // 11
console.log(add10(6)); // 16
Enter fullscreen mode Exit fullscreen mode

这里 add5 和 add10 都是闭包。它们共享相同的定义,但存储不同的环境。想要了解更多关于闭包的信息,可以点击以下链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

10.回调函数

根据 MDN 的定义,回调函数是一个作为参数传递给另一个函数的函数,然后在外部函数内部调用该函数来完成某种例程或操作。例如

function greeting(name) {
  console.log('Hello ' + name);
}

function greetEmployee(name,callback) {

  callback(name);
}

greetEmployee("Dwight",greeting);
Enter fullscreen mode Exit fullscreen mode

这里,greeting 函数在 greetEmployee 函数内部被使用。这就是我们所说的回调函数。继续阅读,了解更多关于 JS 回调的知识。

感谢阅读本文。希望对您有所帮助。

保持联系
快乐编码

文章来源:https://dev.to/samssjubair/10-javascript-interview-questions-you-should-know-2hc0
PREV
当您期望放弃 IE11 时会发生什么🗑️唷!
NEXT
Docker 正在减肥