let key = {
i:"1",
j:"",
k:""
};
if(key.i === "" && key.j==="" && key.k===""){
console.log("不能为空");
}
这样写了 && 以后log不提示了。我想判断3个对象为空是都提示log。
let key = {
i:"1",
j:"",
k:""
};
if(key.i === "" && key.j==="" && key.k===""){
console.log("不能为空");
}
这样写了 && 以后log不提示了。我想判断3个对象为空是都提示log。
科普下,&&和||这两者的区别。
前者(&&)它的名字叫逻辑与,如果用它来判断条件,如下
if(i == 1 && j == 2)
如果第一个条件不满足,即i != 1,那么它不会去判断j的值,甩都不用甩它一下。但如果第一个条件满足的时候,它也要满足第二个条件才能进入if的内部代码去执行,简而言之只有当你的所有条件满足的时候,才能执行条件判断内部代码。
后者(||),这玩意叫逻辑或
在编程里,或,意思就是条件满足只要有一个满足就行,全满足当然也无所谓,但是这个判断符号也有短路作用。拿上面的例子来说
if(i == 1 || j == 2)
如果i==1满足了,那么它就会出现短路作用,不会去判断j的值是多少,直接进入if内部的代码去执行。
因为你其中的 i: "1",不为空呀。
而 if (key.i === "" && key.j ==="" && key.k ===""),在 key.i === "" 这里短路了(具体为什么见上面回答),自然而然就不会判断后面的 key.j 和 key.k 了。
if 就为 false,所以也就不会执行 console.log 了。
分享一个&&和||的记忆法:
&&:并且,而且
||:或者
这里key.i === "" && key.j==="" && key.k===""
意思是i为空而且j为空而且k为空
,显然这不符合逻辑的
换成i为空或者j为空或者k为空
才提示,才是符合逻辑的
所以应该换成key.i === "" || key.j==="" || key.k===""
let key = {
i:"1",
j:"",
k:""
}
if(key.i === "" || key.j==="" || key.k===""){
console.log("不能为空");
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
用或 key.i === "" || key.j==="" || key.k===""