TypeScript中&&、&运算符的行为是否与Java一致?
JavaScript/TypeScript 中
& 和 && 的短路逻辑对比 Java 嗨!在 JavaScript 和 TypeScript 里,这两个运算符的逻辑和你提到的 Java 规则完全一致,我给你掰扯清楚:
&&(逻辑与/短路与):和 Java 里的行为一模一样。如果第一个条件condition1为false,会直接返回false,完全不会去执行或检查第二个条件condition2。举个直观的例子:let a = 0; if (false && (a = 1)) { // 这个代码块永远不会执行 } console.log(a); // 输出 0,因为(a=1)根本没被运行&(按位与/非短路与):同样和 Java 的规则对齐——不管第一个条件是true还是false,两个条件都会被完整计算,之后再按规则得出结果。要注意的是,JS/TS 里如果用&处理布尔值,会先把布尔值转成数字(true→1,false→0),执行按位与运算后再转回布尔值。看这个例子:let b = 0; if (false & (b = 1)) { // 这个代码块也不会执行,但(b=1)已经被运行过了 } console.log(b); // 输出 1,因为第二个表达式确实执行了
额外提一句:在 TypeScript 里还有个类型层面的&(交叉类型),这和运行时的逻辑运算符是两码事,可别搞混咯!
内容的提问来源于stack exchange,提问作者shani klein
相关产品推荐
相关产品推荐

