📅  最后修改于: 2023-12-03 15:31:46.569000             🧑  作者: Mango
欢迎来到 JavaScript 面试问答第三篇,本次我们将涵盖一些常见的 JavaScript 面试问题和答案,帮助你为面试做好准备。
JavaScript 有 7 中数据类型,包括 6 种原始数据类型和一个引用数据类型。原始数据类型包括:
引用数据类型包括:
函数声明可以在任何位置声明,并且在代码执行之前会被提升到作用域的顶部。函数表达式则必须在代码执行到它之前声明。函数表达式可以赋值给变量、作为参数传递给其他函数或者在回调中使用。
// 函数声明
function sum(a, b) {
return a + b;
}
// 函数表达式
const sum = function(a, b) {
return a + b;
}
变量提升指的是在代码执行之前,变量和函数声明都会被提升到作用域的顶部。变量提升只适用于声明,并不适用于赋值。
console.log(name); // undefined
var name = 'Alice';
在上面的代码中,即使变量 name
在 console.log
之前声明,控制台仍然会输出 undefined
,因为虽然变量声明已经被提升到作用域的顶部,但变量的赋值操作并没有提升。
闭包是指一个函数能够访问并使用其他函数作用域内的变量,即使这些变量已经不在该函数的作用域内。闭包常常用于隐藏变量和函数,以及在异步编程中保存状态。
function counter() {
let count = 0;
function increment() {
count++;
console.log(count);
}
return increment;
}
const incrementCounter = counter();
incrementCounter(); // 1
incrementCounter(); // 2
在上面的代码中,counter
函数返回一个内部函数 increment
,该函数能够访问并修改 counter
函数内的变量 count
。并且,由于 increment
函数被分配给 incrementCounter
变量,因此该函数不会被垃圾回收器清除,使得 count
变量能够保持状态。
以上是本系列 JavaScript 面试问答的第三篇,希望这些问题和答案能够帮助你为面试做好准备。