JS 特殊運算符的使用
眾多編程語言之中JavaScript ,以其強大而全面的功能深受前端開發(fā)者喜愛。其豐富的運算符集,不僅包括了廣泛應(yīng)用的算術(shù)運算符、比較運算符以及邏輯運算符,還蘊藏著一系列較為冷門但同樣功能強大的運算符。這些不常被提及的運算符,或許因它們特定的應(yīng)用場景或是相對少見的使用頻率,而未能廣泛進入開發(fā)者的視野。然而,深入了解并掌握這些運算符,無疑能夠為我們的開發(fā)工作增添更多的便利與高效。接下來,讓我們一同了解下哪些冷漠且很適用的運算符~
特殊運算符號有哪些?
1. ??(空值合并運算符)
空值合并運算符 ??
用于當(dāng)左側(cè)操作數(shù)為 null
或 undefined
時,返回右側(cè)操作數(shù)。
let x = null; let y = 'default'; let z = x ?? y; // z 的值為 'default' console.log(z); // 輸出: default
2. ??=(空值合并賦值運算符)
空值合并賦值運算符 ??=
用于當(dāng)左側(cè)變量為 null
或 undefined
時,將右側(cè)的值賦給左側(cè)的變量。
let x = null; let y = 'value'; x ??= y; // x 的值變?yōu)?'value' console.log(x); // 輸出: value
3. ?.(可選鏈運算符)
可選鏈運算符 ?.
允許我們安全地訪問深層嵌套的屬性,而不用擔(dān)心中間某個屬性是 null
或 undefined
。
let user = { name: 'Alice', address: { city: 'Wonderland' } }; let city = user?.address?.city; // city 的值為 'Wonderland' console.log(city); // 輸出: Wonderland let nullUser = null; let nullCity = nullUser?.address?.city; // nullCity 的值為 undefined console.log(nullCity); // 輸出: undefined
4. ?=(三元運算符的簡潔形式?實際上應(yīng)稱為邏輯空賦值運算符的誤解)
注意:這里有一個小誤區(qū),?=
并不是三元運算符的簡潔形式,而是邏輯空賦值運算符(Logical Nullish Assignment ??=
)的一部分,已在上面介紹。真正的三元運算符是 ?:
,用于簡單的條件判斷。
let age = null; age = age ? age : 18; // 傳統(tǒng)三元運算符用法,如果 age 為 null 或 undefined,則賦值為 18 console.log(age); // 輸出: 18 // 使用 ??= 簡化 let age2 = null; age2 ??= 18; // 如果 age2 為 null 或 undefined,則賦值為 18 console.log(age2); // 輸出: 18
5. typeof(類型運算符)
typeof
運算符用于判斷一個變量的類型。
let x = 'Hello, world!'; console.log(typeof x); // 輸出: string let y = 42; console.log(typeof y); // 輸出: number let z = true; console.log(typeof z); // 輸出: boolean let u; console.log(typeof u); // 輸出: undefined
6. instanceof(實例運算符)
instanceof
運算符用于測試一個對象是否在其原型鏈原型上具有一個構(gòu)造函數(shù)的 prototype
屬性。
class Animal { } class Dog extends Animal { } let dog = new Dog(); console.log(dog instanceof Dog); // 輸出: true console.log(dog instanceof Animal); // 輸出: true
7. in(屬性運算符)
in
運算符用于檢查對象是否具有指定的屬性。
let obj = { a: 1, b: 2 }; console.log('a' in obj); // 輸出: true console.log('c' in obj); // 輸出: false
8. delete(刪除運算符)
delete
運算符用于刪除對象的屬性。
let obj = { a: 1, b: 2 }; delete obj.a; console.log(obj); // 輸出: { b: 2 }
9. void(空運算符)
void
運算符用于計算一個表達式,并返回 undefined
作為結(jié)果。
let x = void (0); // x 的值為 undefined console.log(x); // 輸出: undefined
10. ,(逗號運算符)
逗號運算符用于評估兩個表達式,并返回最后一個表達式的結(jié)果。
let x = (1, 2); // x 的值為 2 console.log(x); // 輸出: 2
面試技巧
1. 理解并熟悉每個運算符的用途、優(yōu)點
在面試中,對 JavaScript 運算符的深刻理解能夠幫助你快速解決算法問題,并寫出更簡潔、高效的代碼。
2. 注意運算符的優(yōu)先級和結(jié)合性
了解運算符的優(yōu)先級和結(jié)合性(即運算順序)對于避免邏輯錯誤至關(guān)重要。例如,*
(乘法)的優(yōu)先級高于 +
(加法)。
3. 使用可選鏈運算符簡化代碼
在訪問嵌套對象屬性時,使用可選鏈運算符 ?.
可以避免繁瑣的條件檢查,使代碼更簡潔、易讀。
4. 利用空值合并運算符處理默認(rèn)值
在處理可能為 null
或 undefined
的變量時,使用空值合并運算符 ??
可以方便地設(shè)置默認(rèn)值,減少代碼冗余。
5. 掌握三元運算符的簡潔寫法
三元運算符 ?:
是條件判斷的一種簡潔寫法,可以在一行內(nèi)完成簡單的條件邏輯,使代碼更加緊湊。
6. 理解 typeof
和 instanceof
的區(qū)別
typeof
用于判斷變量類型,而 instanceof
用于判斷對象是否是某個構(gòu)造函數(shù)的實例,兩者在用途上有所不同。
7. 謹(jǐn)慎使用 delete
運算符
delete
運算符可以刪除對象的屬性,但刪除數(shù)組元素時應(yīng)謹(jǐn)慎,因為它不會改變數(shù)組長度,只是將元素值設(shè)置為 undefined
。
8. 熟悉逗號運算符的用途
逗號運算符在某些情況下可以簡化代碼,例如在 for
循環(huán)中同時更新多個變量。
9. 利用 void
運算符避免不必要的返回值
void
運算符可以用于避免函數(shù)或表達式返回不必要的值,確保代碼邏輯的清晰性。
到此這篇關(guān)于JS 特殊運算符的使用的文章就介紹到這了,更多相關(guān)JS 特殊運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)比較功能的方法匯總(五種方法)
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)比較功能的方法,本文給大家列舉出五種方式,每種方法通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03js表數(shù)據(jù)排序 sort table data
對于表格的排序,是很不錯的一個功能,方便用戶快速的分析一些數(shù)據(jù)。2009-02-02