簡體   English   中英

類型檢查運算符語句的結果

[英]Type-checking the result of operator statements

a = 'A';
b = null;

const w = a === b;
const x = a && a.length;
const y = b && b.length;
const z = (a && a.length) || (b && b.length);
const u = (a && a.length) && (b && b.length);

console.log(typeof w); // boolean
console.log(typeof x); // number 
console.log(typeof y); // object
console.log(typeof z); // number 
console.log(typeof u); // object

我期待他們都是boolean? 你能幫我理解為什么其中一些不是 boolean 嗎?

我不清楚為什么短路評估會導致不同的 z 和 u 類型。

x, y, z, u是短路評估,而不是條件。

const x = a && a.length;

這意味着將a.length分配給x is a exists 等等。 因此有一個number

而如果您將它們放在 if 條件中,它們將被隱式類型轉換為boolean

 const a = null || "works." console.log(a)

如果你運行上面的代碼片段,你會意識到|| 作品。 如果 || 左邊的值計算結果為假,則返回右邊的值,否則返回左邊的值。

 const x = a && a.length; // a.length = 1 const y = b && b.length; // b = null const z = (a && a.length) || (b && b.length); // a.length = 1 const u = (a && a.length) && (b && b.length); // b = null a && a.length // ===> true and 1 b && b.length // ===> false and next line;

x || y x || y如果 x 為真,則返回 x 並且 y 不執行,如果 x 為假,則返回 y;

x && y如果 x 為真,則返回 y,如果 x 為假,則返回 x;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM