![](/img/trans.png)
[英]Javascript: Ensuring an argument yields a valid HTML element (type-checking)
[英]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.