📜  JavaScript 面试问答 |第 2 组(1)

📅  最后修改于: 2023-12-03 15:16:16.500000             🧑  作者: Mango

JavaScript 面试问答 |第 2 组

简介

本文给程序员整理了一些常见的JavaScript面试问题,帮助程序员更好的准备和通过面试。

问题及解答
1. JavaScript中的变量提升是什么?

在JavaScript中声明的变量和函数会被提升到作用域的顶部,这意味着在声明之前可以使用变量或函数。例如:

console.log(a); // 输出 undefined
var a = 'hello';

变量a在声明之前已经被使用了,但其值为undefined。这是因为在编译阶段会将变量a提升到作用域的顶部,而赋值操作则会在执行阶段进行。

2. 如何遍历一个对象的所有属性?

可以使用for-in循环遍历一个对象的所有属性。例如:

const obj = { name: 'Tom', age: 18 };
for (let key in obj) {
  console.log(`${key}: ${obj[key]}`);
}
// 输出:name: Tom, age: 18

需要注意的是,for-in循环会遍历对象的原型链上所有可枚举的属性,所以需要使用hasOwnProperty方法来判断属性是否为对象本身的属性。

3. 箭头函数和普通函数的区别有哪些?

箭头函数和普通函数的定义方式不同,箭头函数使用箭头(=>)来定义。

另外,箭头函数没有自己的this,它继承外层作用域的this,并且不可以改变this指向。此外,箭头函数没有arguments对象,也不能通过new关键字来调用。

4. 如何判断一个变量是否为数组?

可以使用Array.isArray方法来判断一个变量是否为数组。例如:

const arr = [1, 2, 3];
console.log(Array.isArray(arr)); // 输出 true
5. 在JS中什么是闭包?

闭包指的是在函数内部创建一个新的函数,新的函数可以访问到外部函数的变量和参数,而外部函数无法访问到内部函数的变量。

闭包通常用来创建私有变量和方法。例如:

function counter() {
  let count = 0;
  return function() {
    count++;
    console.log(count);
  }
}
const c = counter();
c(); // 输出 1
c(); // 输出 2
c(); // 输出 3

这里的counter函数返回一个内部函数,这个内部函数可以访问到外部函数的count变量,并对其进行修改,从而实现了计数器的功能。由于count变量只能在内部函数中被访问到,所以实现了私有变量的效果。

结语

以上就是本文整理的JavaScript面试问题,希望对程序员的面试有所帮助。当然,这些问题只是面试中的一部分,程序员还需要针对公司的具体岗位和业务进行更多的准备。