colorX 是我的某個函式的引數。
colorX = typeof colorX !== ('undefined' || 'null' || '') ? colorX : 'abc';
這里對于“未定義”,我將 abc 作為值。但是當我將 null 或 'null' 或空字串作為引數輸入傳遞時。我收到錯誤。
另外null和'null'有什么區別?
uj5u.com熱心網友回復:
使用三元運算子,您可以簡單地將其簡化為
colorX = colorX ? colorX : 'abc';
條件(三元)運算子語法是
condition ? exprIfTrue : exprIfFalse
并根據MDN檔案
...null、NaN、0、空字串 ("") 和未定義。如果條件是其中任何一個,條件運算式的結果將是執行運算式 exprIfFalse 的結果。
但是,或者甚至更短(如果您正在檢查所有“假”值),您也可以使用邏輯 OR
colorX = colorX || 'abc';
請注意
null, undefined, 0
帶引號只是變成包含沒有“功能意義”的字符的字串
uj5u.com熱心網友回復:
解釋
null 對比 'null'
使用 時typeof,它需要該型別的字串版本,例如'undefined'、'function'、'bigint'等。但是,特別是對于null它作為物件起作用的型別:
console.log(typeof null); // expected output: object
console.log(typeof 'strExample'); // expected output: string
// We can return a boolean by doing so:
let variable = 10;
console.log(typeof variable === 'string'); // expected output: false
關于原因的解釋可以在MDN上找到:
在 JavaScript 的第一個實作中,JavaScript 值被表示為一個型別標記和一個值。物件的型別標記是
0。null被表示為 NULL 指標(0x00在大多數平臺中)。因此,null有 0 作為型別標記,因此typeof回傳值"object"。(參考)提出了針對 ECMAScript 的修復(通過選擇加入),但被拒絕。它會導致
typeof null === 'null'.
在任何其他情況下,'null','undefined'和'string'將被標識為字串,因為它們被包圍在'''s 中,這就是 @reyno 所指的地方。
請參閱typeof 此處的所有接受值。
檢查是否為空
// null will be identified as an "object" type; checking
// null with typeof is redundant as {} can be the same as null.
console.log(typeof null); // expected output: object
console.log(typeof {}); // expected output: object
// so we can just do:
let colorX = null;
console.log(colorX === null); // expected output: true
結果代碼
由于虛假值可以是以下任何一個:
此外
false,可能的假運算式有:null、NaN、0、 空字串 ("") 和undefined。
MDN
我們可以簡單地做:
colorX = colorX || 'abc';
正如@ivar 聲稱的那樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/345110.html
標籤:javascript 功能 参数 空值 不明确的
