前端面试知识点梳理——js基础面试题
2023-09-27 14:24:53
JavaScript 基础面试常见问题指南
Var、Let 和 Const 的异同
在 JavaScript 中,理解 var
、let
和 const
三种变量声明方式之间的区别至关重要。var
是 ES5 语法,而 let
和 const
则是 ES6 语法。
- 作用域:
var
具有函数级作用域,这意味着在函数内部声明的var
变量可在整个函数内访问。let
和const
具有块级作用域,这意味着它们只在声明它们的代码块内可用。 - 变量提升:
var
变量会被提升到函数或全局作用域的顶部,这意味着可以在声明之前使用它们。let
和const
没有变量提升。 - 可修改性:
var
和let
声明的变量都可以修改,而const
声明的常量不可修改。
ES5 和 ES6 语法
ES5 是 JavaScript 的第五个版本,于 2009 年发布。ES6,也称为 ES2015,于 2015 年发布,对 JavaScript 进行了多项改进,包括:
- 引入了
let
和const
变量声明。 - 添加了块级作用域。
- 引入了箭头函数、模板字符串等新特性。
块级作用域
块级作用域是指变量的作用域只限于它所在的代码块内。这意味着不同代码块中可以声明具有相同名称的变量,而不会相互冲突。在 ES5 中,只有 let
和 const
声明的变量具有块级作用域。在 ES6 中,所有变量都具有块级作用域。
变量提升
变量提升是指变量在代码执行前被提升到代码的顶部。这意味着可以在声明之前使用变量。在 ES5 中,只有 var
声明的变量会被提升。在 ES6 中,所有变量都会被提升。
作用域提升
作用域提升是指函数的作用域在代码执行前被提升到代码的顶部。这意味着可以在声明之前调用函数。在 ES5 中,只有 function
声明的函数会被提升。在 ES6 中,所有函数都会被提升。
变量声明提升
变量声明提升是指变量的声明在代码执行前被提升到代码的顶部。这意味着可以在声明之前访问变量的值。在 ES5 中,只有 var
声明的变量会被提升。在 ES6 中,所有变量都会被提升。
Let 和 Const 没有变量提升
与 var
不同,let
和 const
声明的变量没有变量提升。这意味着必须在声明它们之后才能访问它们。
严格模式
严格模式是一种 JavaScript 运行模式,它可以使代码更安全、更可靠。它可以通过在脚本的第一行添加 "use strict";
来启用。严格模式会禁止一些不推荐的 JavaScript 行为,例如变量声明提升和隐式全局变量。
Global
global
是 JavaScript 中的全局对象。它包含所有全局变量和函数。可以在任何地方访问 global
对象。
代码示例
以下代码示例演示了 var
、let
和 const
之间的差异:
// 使用 var 声明变量
var myVar = 10;
// 在声明之前访问变量
console.log(myVar); // 输出:10
// 使用 let 声明变量
let myLet = 20;
// 在声明之前访问变量(将引发错误)
console.log(myLet); // 输出:ReferenceError: myLet is not defined
// 使用 const 声明常量
const myConst = 30;
// 尝试修改常量(将引发错误)
myConst = 40; // 输出:TypeError: Assignment to constant variable.
常见问题解答
- 为什么 ES6 中引入了
let
和const
?
为了提高代码的可预测性、安全性,并消除与var
相关的提升问题。 - 块级作用域有哪些好处?
它可以防止变量冲突、减少命名空间污染并提高代码可读性。 - 变量提升有什么缺点?
它会导致难以调试的错误,因为变量可能在预期之前被使用。 - 如何启用严格模式?
通过在脚本的第一行添加"use strict";
。 global
对象有什么用途?
它提供了对所有全局变量和函数的访问,使它们可以在任何地方使用。
结论
了解 JavaScript 基础知识对于前端面试非常重要。掌握 var
、let
和 const
的区别、ES5 和 ES6 语法、块级作用域、变量提升等概念至关重要。通过理解这些关键概念,求职者可以为前端面试做好充分准备,并展现他们对 JavaScript 的扎实基础。