首页 > js中if判断条件为一个赋值语句

js中if判断条件为一个赋值语句

代码如下:

tag = false
if(tag = !tag){
}else{
}

这个if判断不是应该是恒为true吗?


tag = false
if(tag = !tag){
}else{
}

以上是你的代码,这个代码是没问题的
tag = false;
那么:!tag肯定为true
然后:tag = !tag
所以:tag = true
也就是说:if(tag = !tag) 得到的tag值为true
好了,解释了这么多,我来说一下这种用法的方便之处,例如:

var is_window = function() {
    if(window == undefined) {
        return false;
    } else {
        return window;
    }
}
if(win = is_window()) {
    console.log(win);
} else {
    console.log('不存在window');
}

第一行的 tag = false 后面的 false 值可能是由后端动态输出至页面的.

或者以前是从其他地方取的, 后来不需要了, 但又不想删代码, 所以直接改成false来使用.

所以才会出现这种, 条件一直成立的代码 -,-


这段代码绝对的有问题。

首先变量没有声明,浏览器环境会没问题,但是在应用严格模式的环境下会是undefined,其不可复制,导致你后面全是有问题的,报不报错晚上回去实验,如果不保存的话,最执行if中的代码。


tag = false
if(!tag){
}else{
}

应该和这个没区别吧。


1、首先,这个判断恒为true,运行顺序为
1.1、!flag --> 得到 true
1.2、flag = !flag 将true 赋值给flag,flag的值变成true
1.3、if(flag=!flag) ,flag的值为true,于是恒成立

2、其次,这是段有问题的代码,请不要怀疑


这个不一定恒为true.
因为在if判断中,tag = !tag,会改变tag的值。
如果你第二次运行的时候,tag = false与if语句同时执行,那么就恒定为true,
而如果第二次执行的时候,仅仅只是执行了if语句,tag的值会在true与false之前切换,if的判断结果也会切换


恒为true...没看懂这个代码的意思,你确定这是一段逻辑没问题的代码?

【热门文章】
【热门文章】