JS常见面试题:码农求职指南
2023-12-16 08:03:04
一、数据类型:JS 的积木
在 JS 的世界中,数据类型就像积木,构成了一切。从数字到字符串,再到对象和函数,每种类型都有其独特的特性,理解它们至关重要。
二、typeof:揭秘数据类型
typeof 运算符就像一面镜子,让我们了解变量的数据类型。它揭示了变量的本质,无论是数字、字符串还是其他类型,让我们能够根据相应处理它们。
三、箭头函数 vs. 普通函数:谁更胜一筹
箭头函数和普通函数是 JavaScript 函数界的两个兄弟,各有特色。箭头函数更简洁、更强大,但两者都能完成相同的工作,选择权在于您。
四、this 函数中的神秘指向
this 就像函数内部的一盏灯,指向调用函数的对象。它允许我们访问函数所在对象的属性和方法,揭开函数的真正威力。
五、call 和 apply:改变函数的命运
call 和 apply 方法是函数调用的魔术师。它们可以改变函数的 this 指向,就像在函数周围施加了一个隐形魔法圈,赋予我们更大的控制权。
六、undefined 和 null:似是而非的表兄弟
undefined 和 null 经常被混淆,但它们本质不同。undefined 表示变量没有被赋值,而 null 表示变量被明确赋值为 null。区分它们至关重要,避免潜在的错误。
七、变量提升:JS 的隐形力量
在 JS 中,变量提升就像一个隐形的精灵,将变量提升到代码顶部。这可能有点让人惊讶,但了解它可以帮助我们避免陷阱,编写更清晰、更可靠的代码。
八、阻止默认行为和事件冒泡:掌控事件流
阻止默认行为和事件冒泡就像在事件流中竖起两道屏障。它们可以控制事件的传播,防止意外行为并提供更好的用户体验。
九、操作符:JS 的魔法工具
操作符是 JS 中的数学魔杖。从简单的加减法到复杂的逻辑运算,它们赋予我们操纵数据和执行复杂操作的能力,使我们能够编写强大的代码。
代码示例
// 数据类型
console.log(typeof 123); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
// typeof 运算符
function getType(x) {
return typeof x;
}
console.log(getType(10)); // "number"
console.log(getType("JavaScript")); // "string"
// 箭头函数和普通函数
const arrow = () => {
console.log("我是箭头函数");
};
const regular = function () {
console.log("我是普通函数");
};
arrow(); // "我是箭头函数"
regular(); // "我是普通函数"
// this 关键字
const obj = {
name: "John",
getName: function () {
return this.name;
},
};
console.log(obj.getName()); // "John"
// call 和 apply 方法
function greet(name) {
console.log("你好," + name);
}
greet.call(obj, "John"); // "你好,John"
greet.apply(obj, ["John"]); // "你好,John"
// undefined 和 null
let x; // undefined
let y = null; // null
console.log(x === undefined); // true
console.log(y === null); // true
// 变量提升
console.log(a); // undefined
var a = 10;
// 阻止默认行为和事件冒泡
const button = document.querySelector("button");
button.addEventListener("click", (e) => {
e.preventDefault(); // 阻止表单提交
e.stopPropagation(); // 阻止事件冒泡
});
// 操作符
console.log(10 + 5); // 15 (加法)
console.log(10 - 5); // 5 (减法)
console.log(10 * 5); // 50 (乘法)
console.log(10 / 5); // 2 (除法)
console.log(10 % 5); // 0 (求余)
常见问题解答
-
JS 中有多少种数据类型?
- 8 种:数字、字符串、布尔值、对象、数组、函数、null 和 undefined。
-
typeof 运算符的用途是什么?
- 确定变量的数据类型。
-
箭头函数和普通函数有什么区别?
- 箭头函数更简洁,没有自己的 this 关键字,并且可以使用父函数的 this 关键字。
-
this 关键字的作用是什么?
- 指向调用函数的对象。
-
call 和 apply 方法如何改变函数的 this 指向?
- call 和 apply 可以指定函数的 this 指向,从而让我们可以将函数应用到不同的对象上。