if判断中&& 与 ()问题

发布于 2022-09-02 00:08:00 字数 178 浏览 25 评论 0

if(A && (B!=C))
请问是不是先判断B!=C,然后才去判断A?

如果改成if( (A) && (B!=C) )
那是不是就是先判断A,然后才判断B!=C?

如果改成if(A && B != C)
那是不是先判断B!=C然后才判断A?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

ゞ花落谁相伴 2022-09-09 00:08:00

这个加不加括号和执行顺序无关.

var a = function(){
console.log(1);
return true;
},b = function(){
console.log(2);
return true;
};
if(a() && (b())){
console.log('YES')
}

不才,献丑了

没有心的人 2022-09-09 00:08:00

if(A && (B!=C))
请问是不是先判断B!=C,然后才去判断A?

不是。先判断A,你说的优先级问题只的是:A && (B!=C)时,不会是A && B 算完了再 !=C

另外 ||是短路运算,即A || B,如果A为true,则根本不会计算B是什么值。

格子衫的從容 2022-09-09 00:08:00

if(A && (B!=C))
请问是不是先判断B!=C,然后才去判断A? 不是

如果改成if( (A) && (B!=C) )
那是不是就是先判断A,然后才判断B!=C? 不改也是先A

如果改成if(A && B != C)
那是不是先判断B!=C然后才判断A? 先A

你要知道&和&&,以及|与||的区别,&&和||会有截断的机制,类似与短路,当||中第一个为true时后面的都不判断直接返回true,而&&中第一个为false时后面的也不判断直接返回false,知道了这个,上面你问的问题自己想想其实就没有意义了。。。

刚才手抖敲反了,不好意思!!!

冷…雨湿花 2022-09-09 00:08:00
if(A && (B!=C))

&&运算符从左往右计算,有短路功能
如前面1个操作数为true,不执行后面的表达式
否者后面的表达式将被执行,转成boolean值再判断

例如

var a=10;
var b=0;
var c=10;
if(b&&(a!=c?a=0:a=-1)){
    console.log('TRUE');
}else{
    console.log('FALSE');
}
console.log(a);
输出结果为FALSE,10
()表达式不会被执行
var a=10;
var b=1;
var c=10;
if(b&&(a!=c?a=0:a=-1)){
    console.log('TRUE');
}else{
    console.log('FALSE');
}
console.log(a);
输出结果为TRUE,-1
()中的表达式被执行
音栖息无 2022-09-09 00:08:00

A && (B!=C)
依然是先计算A 如果Boolean(A)的结果为false,则遵从短路原则,直接返回A的值而不会再计算 B!=C的结果

过期以后 2022-09-09 00:08:00

肯定是先判断A

乖乖兔^ω^ 2022-09-09 00:08:00

短路原理, 从左至右判断 遇到括号就把括号中的内容当做整体再判断

很酷又爱笑 2022-09-09 00:08:00

这种问题我想应该只会出现在某些大学考试的试卷里。

实际开发根本不会操心这个,毕竟执行结果都一样。

所以,这应该是个学术问题,而不是技术问题。已经超出我们大部分人的能力了,哈哈。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文