扫码关注官方订阅号
代码如下:
tag = false if(tag = !tag){ }else{ }
这个if判断不是应该是恒为true吗?
业精于勤,荒于嬉;行成于思,毁于随。
1、首先,这个判断恒为true,运行顺序为1.1、!flag --> 得到 true1.2、flag = !flag 将true 赋值给flag,flag的值变成true1.3、if(flag=!flag) ,flag的值为true,于是恒成立
2、其次,这是段有问题的代码,请不要怀疑
恒为true...没看懂这个代码的意思,你确定这是一段逻辑没问题的代码?
这个不一定恒为true.因为在if判断中,tag = !tag,会改变tag的值。如果你第二次运行的时候,tag = false与if语句同时执行,那么就恒定为true,而如果第二次执行的时候,仅仅只是执行了if语句,tag的值会在true与false之前切换,if的判断结果也会切换
tag = !tag
tag = false
以上是你的代码,这个代码是没问题的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'); }
这段代码绝对的有问题。
首先变量没有声明,浏览器环境会没问题,但是在应用严格模式的环境下会是undefined,其不可复制,导致你后面全是有问题的,报不报错晚上回去实验,如果不保存的话,最执行if中的代码。
tag = false if(!tag){ }else{ }
应该和这个没区别吧。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
1、首先,这个判断恒为true,运行顺序为
1.1、!flag --> 得到 true
1.2、flag = !flag 将true 赋值给flag,flag的值变成true
1.3、if(flag=!flag) ,flag的值为true,于是恒成立
2、其次,这是段有问题的代码,请不要怀疑
恒为true...没看懂这个代码的意思,你确定这是一段逻辑没问题的代码?
这个不一定恒为true.
因为在if判断中,
tag = !tag
,会改变tag的值。如果你第二次运行的时候,
tag = false
与if语句同时执行,那么就恒定为true,而如果第二次执行的时候,仅仅只是执行了if语句,tag的值会在true与false之前切换,if的判断结果也会切换
以上是你的代码,这个代码是没问题的
tag = false;
那么:!tag肯定为true
然后:tag = !tag
所以:tag = true
也就是说:if(tag = !tag) 得到的tag值为true
好了,解释了这么多,我来说一下这种用法的方便之处,例如:
这段代码绝对的有问题。
首先变量没有声明,浏览器环境会没问题,但是在应用严格模式的环境下会是undefined,其不可复制,导致你后面全是有问题的,报不报错晚上回去实验,如果不保存的话,最执行if中的代码。
应该和这个没区别吧。