返回

JavaScript基础面试问答

前端

JavaScript 变量、数据类型、运算符、控制语句、函数、对象和数组

在 JavaScript 中,变量可以存储数据并供以后使用。它们可以是基本数据类型(例如数字、字符串、布尔值)或引用数据类型(例如对象、数组、函数)。变量的作用域决定了它们在程序中的哪些部分可以访问。

变量

定义变量

  • 使用 letconst 声明变量。
  • 变量名必须由字母、数字或下划线组成,不能以数字开头。
  • let 变量可重新赋值,而 const 变量为常量,不能重新赋值。

作用域

  • letconst 声明的变量具有块级作用域,仅在声明它们的代码块内有效。
  • var 声明的变量具有函数级作用域,在声明它们的函数内有效。

数据类型

基本数据类型

  • undefined: 未初始化的变量
  • null: 空值
  • 布尔值: truefalse
  • 数字: 整数或浮点数
  • 字符串: 一系列字符
  • Symbol: 唯一且不可变的标识符

引用数据类型

  • 对象: 键值对的集合
  • 数组: 存储在索引位置处的元素的有序集合
  • 函数: 可执行代码的块

确定数据类型

使用 typeof 运算符检查变量的数据类型。

运算符

JavaScript 提供了广泛的运算符,包括:

  • 算术运算符: 加法 (+)、减法 (-)、乘法 (*)、除法 (/)、模数 (%)、指数 (**)
  • 比较运算符: 等于 (==)、严格等于 (===)、不等于 (!=)
  • 逻辑运算符: 与 (&&)、或 (||)、非 (!)
  • 位运算符: 与 (&)、或 (|)、异或 (^)、非 (~)、左移 (<<)、右移 (>>)
  • 赋值运算符: 赋值 (=)、加法赋值 (+=)、减法赋值 (-=)

控制语句

if 语句

  • 根据条件执行代码块。

switch 语句

  • 根据表达式值执行不同的代码块。

循环

  • for 循环: 使用初始值、条件和步长重复执行代码块。
  • while 循环: 只要条件为真就重复执行代码块。
  • do-while 循环: 至少执行一次代码块,然后只要条件为真就重复执行。

函数

定义函数

  • 使用 function 声明函数。
  • 函数可以接收参数并返回一个值。

调用函数

  • 使用函数名和参数调用函数。

对象

定义对象

  • 使用大括号 ({}) 定义对象。
  • 对象包含键值对。

访问对象属性

  • 使用点运算符 (.) 或方括号运算符 ([]) 访问对象属性。

数组

定义数组

  • 使用方括号 ([]) 定义数组。
  • 数组可以存储任何数据类型。

访问数组元素

  • 使用方括号运算符访问数组元素。

代码示例

// 变量
let name = "John";
const age = 30;

// 数据类型
console.log(typeof name); // "string"
console.log(typeof age); // "number"

// 运算符
let result = 10 + 20;
console.log(result); // 30

// 控制语句
if (age > 18) {
  console.log("You are an adult.");
}

// 循环
for (let i = 0; i < 10; i++) {
  console.log(i);
}

// 函数
function greet(name) {
  return "Hello, " + name;
}
console.log(greet("John"));

// 对象
const person = {
  name: "John",
  age: 30,
  greet: function() {
    console.log("Hello, I am " + this.name);
  }
};
person.greet();

// 数组
const numbers = [1, 2, 3, 4, 5];
console.log(numbers[2]); // 3

常见问题解答

  1. 什么是严格等于运算符 (===)?
    严格等于运算符检查值和类型是否相等。

  2. 如何比较字符串?
    使用严格等于运算符 (===) 或转换为数字并比较。

  3. 如何向数组添加元素?
    使用 push() 方法向数组末尾添加元素。

  4. 如何循环遍历对象?
    使用 for-in 循环或 Object.keys()forEach() 方法。

  5. 什么是闭包?
    闭包是带有访问外层作用域变量的内嵌函数。