在前端開發中,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 并加深你的開發技能。