JavaScript作为前端开发的核心技术之一,掌握其基础是每个开发者必备的技能。本文将为你提供一个JavaScript基础题库,帮助你巩固编程技巧,轻松应对面试挑战。

1. 数据类型

1.1 数据类型概述

JavaScript中的数据类型分为两大类:基本数据类型和引用数据类型。

  • 基本数据类型numberstringbooleanundefinednullsymbolBigInt
  • 引用数据类型Object(包括ArrayFunction等)

1.2 基本数据类型

1.2.1 Number

let num = 10; // 整数
let num2 = 3.14; // 浮点数
let num3 = Number.MAX_VALUE; // 最大值
let num4 = Number.MIN_VALUE; // 最小值

1.2.2 String

let str = "Hello, world!"; // 字符串
let str2 = `这是一个模板字符串`; // 模板字符串

1.2.3 Boolean

let bool = true; // 布尔值
let bool2 = false;

1.2.4 Undefined

let u; // 未定义

1.2.5 Null

let n = null; // 空值

1.2.6 Symbol

let sym = Symbol("unique"); // 唯一标识符

1.2.7 BigInt

let bigInt = BigInt(123456789012345678901234567890); // 大整数

1.3 引用数据类型

1.3.1 Object

let obj = {}; // 空对象
let arr = []; // 空数组
let func = function() {}; // 空函数

2. 运算符

2.1 算术运算符

let a = 5;
let b = 3;
let sum = a + b; // 加法
let sub = a - b; // 减法
let mul = a * b; // 乘法
let div = a / b; // 除法
let mod = a % b; // 取模

2.2 关系运算符

let a = 5;
let b = 3;
let isGreaterThan = a > b; // 大于
let isLessThan = a < b; // 小于
let isGreaterThanOrEqualTo = a >= b; // 大于等于
let isLessThanOrEqualTo = a <= b; // 小于等于
let isStrictlyEqual = a === b; // 严格等于
let isNotEqual = a !== b; // 不等于

2.3 逻辑运算符

let a = true;
let b = false;
let and = a && b; // 与
let or = a || b; // 或
let not = !a; // 非

2.4 赋值运算符

let a = 5;
let b = 3;
a += b; // a = a + b
a -= b; // a = a - b
a *= b; // a = a * b
a /= b; // a = a / b
a %= b; // a = a % b

3. 控制结构

3.1 条件语句

let a = 5;
if (a > 3) {
  console.log("a大于3");
} else {
  console.log("a不大于3");
}

3.2 循环语句

3.2.1 for循环

for (let i = 0; i < 5; i++) {
  console.log(i);
}

3.2.2 while循环

let i = 0;
while (i < 5) {
  console.log(i);
  i++;
}

3.2.3 do…while循环

let i = 0;
do {
  console.log(i);
  i++;
} while (i < 5);

4. 函数

4.1 函数定义

function sayHello(name) {
  console.log(`Hello, ${name}!`);
}

4.2 函数调用

sayHello("Alice"); // 输出:Hello, Alice!

4.3 递归函数

function factorial(n) {
  if (n === 0) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}
console.log(factorial(5)); // 输出:120

5. 数组

5.1 数组定义

let arr = [1, 2, 3, 4, 5];

5.2 数组方法

let arr = [1, 2, 3, 4, 5];
arr.push(6); // 添加元素
arr.pop(); // 删除元素
arr.shift(); // 删除第一个元素
arr.unshift(0); // 添加到第一个元素
arr.splice(1, 2); // 删除第二个和第三个元素
arr.slice(1, 3); // 截取数组
arr.sort(); // 排序
arr.reverse(); // 反转

6. 对象

6.1 对象定义

let obj = {
  name: "Alice",
  age: 25,
  sayHello: function() {
    console.log(`Hello, my name is ${this.name}`);
  }
};

6.2 对象方法

let obj = {
  name: "Alice",
  age: 25,
  sayHello: function() {
    console.log(`Hello, my name is ${this.name}`);
  }
};
obj.sayHello(); // 输出:Hello, my name is Alice

7. 事件处理

7.1 事件监听

document.getElementById("btn").addEventListener("click", function() {
  console.log("按钮被点击了");
});

7.2 事件冒泡

document.getElementById("parent").addEventListener("click", function() {
  console.log("父元素被点击了");
});

document.getElementById("child").addEventListener("click", function() {
  console.log("子元素被点击了");
});

8. 异步编程

8.1 回调函数

function fetchData(callback) {
  setTimeout(() => {
    callback("数据");
  }, 1000);
}

fetchData(function(data) {
  console.log(data); // 输出:数据
});

8.2 Promise

function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("数据");
    }, 1000);
  });
}

fetchData().then(data => {
  console.log(data); // 输出:数据
});

8.3 async/await

async function fetchData() {
  let data = await new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("数据");
    }, 1000);
  });
  console.log(data); // 输出:数据
}

fetchData();

总结

通过以上题库的学习,相信你已经对JavaScript基础有了更深入的了解。在面试中,掌握这些基础知识和编程技巧,将有助于你更好地应对挑战。祝你面试顺利!