在前端开发中,JavaScript 绝对是最常用的语言之一。尽管它十分流行,但依旧存在一些神奇的冷知识,这些知识可能并不常见,但它们又是非常实用的。下面我们就一起看看这些意想不到的 JavaScript 冷知识。
一、NaN != NaN
console.log(NaN === NaN); // false
console.log(NaN !== NaN); // true
在 JavaScript 中,NaN 是“不是数值”(not a number)的意思。尽管两个 NaN 比较起来会得到 false,但实际上它们都表示相同的概念。
二、'2' + 2 = '22'
console.log('2' + 2); // '22'
这种有趣的类型转换看起来非常奇怪,但是在 JavaScript 中,可以将字符串与其他类型值相加,此时它们会被自动转换为字符串类型。在本例中,数字2被转换为字符串,然后与另一个字符串 “2”连接起来。
三、非布尔类型的值可以用于if语句中
let a = 'hello world!';
if(a) {
console.log('这行代码达到了 !'); // 输出 “这行代码达到了!”
}
在在if语句中,非布尔类型的值也可以被视为条件。如果值是 0、null、""、undefined 或者NaN 则会被视为false,其他值被视为true。在上面的例子中,即使变量a不是一个布尔类型,但由于它表示一个字符串,所以它会被if语句视为true。
四、当不使用var、let或const定义变量时,它们将变成全局变量
function example() {
a = 10;
}
example();
console.log(a); // 输出 10
在 JavaScript 中,当你忘记使用 var、let 或 const 定义变量时,这个变量会被认为是一个全局变量,即使它是在函数内部定义的,它仍然可以在任何地方访问到。
五、使用void运算符可以防止浏览器跳转
这是一条链接
在一些情况下,我们需要调用 JavaScript 函数来执行某个操作,但我们又不希望浏览器跳转到一个新的页面。为了解决这个问题,我们可以使用 void 运算符。void 运算符接受一个参数并返回 undefined,它可以用于防止浏览器执行与此链接关联的默认操作。在上面的例子中,当用户单击这个链接时,会调用一个返回 undefined 的JavaScript 函数,而不是跳转到另一页。
六、在JavaScript中,可以使用逗号运算符使代码更简洁
let a = 1, b = 2, c = 3;
console.log(a, b, c); // 输出 1 2 3
在JavaScript中,逗号运算符可以用来分隔语句,从而使代码更简洁。在上面的例子中,我们定义了三个变量 a、b 和 c ,并在一条语句中对它们进行了初始化。这种代码行写法可以把变量都归在一起,使代码更简洁,读起来也更清晰。
七、JS可以比较数组
let a = [1, 2, 3];
let b = [1, 2, 3];
console.log(a == b); // 输出 false
在JavaScript中,可以比较两个数组的值。尽管a和b看起来一样,但当你比较它们时,会得到一个 false。这是因为两个数组虽然看起来一样,但它们仍然是两个不同的对象。如果你需要比较两个对象是否一样,可以使用 JSON.stringify() 函数。
八、JavaScript支持Unicode字符
console.log('\u2605'); // 输出 ☆
console.log('\u2661'); // 输出 ♡
在JavaScript中,你可以使用 Unicode 转义序列,这是一种用于表示 Unicode 字符的约定方式。需要在斜杠和u之后输入4个十六进制数字(必须是大写)。在上面的例子中,这两行代码输出了两个Unicode字符。
这些JavaScript冷知识可能看起来有点奇怪或无用,但在某些情况下,它们会非常实用。这些知识点希望能帮助你更好的理解 JavaScript 并加深你的开发技能。