我的主控制器中有一个if-else
:
var entity = shareDataService.getModalEntity();
if (entity = "NULL" || entity.length === 1) {
myDataPromise = getDataService.getDataFromREST(security);
console.log("HERE")
} else {
myDataPromise = $q.all(getDataService.keepICorrect(security));
console.log("THERE")
};
来自服务的entities
数据shareDataService
。
在entity.length === 1
或entity === "NULL"
时工作正常,但当数组为length
2或更多时,条件不会将其传递给else
。我无法解决为什么,我在if-else
之前调试,检查传递给控制器函数的值,并且数组肯定是length
2+时我打算这样做。在entity.length
之前调试if-else
也显示数组的正确长度。我错过了什么?
答案 0 :(得分:9)
您正在分配比较值
entity = "NULL"
试试这个
entity == "NULL"
Sugession :
您可以查看 falsy 。
null
,''
,undefined
,0
,NaN
在javascript中考虑 falsy
试试这个
if(!entity || entity.length === 1)
答案 1 :(得分:1)
var entity = shareDataService.getModalEntity();
if (entity = "NULL" || entity.length === 1) {
注意=
而不是==
或===
,您将"null"
的值分配到entity
然后计算到一个真值,||
是短路的,因为第一个表达式评估为真,length === 1
部分不会被评估,所以if
语句的真正分支将永远执行。