if(array.length === 1)条件不适用于长度数组> 1

时间:2015-12-03 10:38:41

标签: javascript arrays angularjs

我的主控制器中有一个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 === 1entity === "NULL"时工作正常,但当数组为length 2或更多时,条件不会将其传递给else。我无法解决为什么,我在if-else之前调试,检查传递给控制器​​函数的值,并且数组肯定是length 2+时我打算这样做。在entity.length之前调试if-else也显示数组的正确长度。我错过了什么?

2 个答案:

答案 0 :(得分:9)

您正在分配比较值

entity = "NULL"

试试这个

entity == "NULL"

Sugession

您可以查看 falsy

null''undefined0NaN在javascript中考虑 falsy

试试这个

if(!entity || entity.length === 1)

答案 1 :(得分:1)

var entity = shareDataService.getModalEntity();

if (entity = "NULL" || entity.length === 1) {

注意=而不是=====,您"null"的值分配entity然后计算到一个真值,||是短路的,因为第一个表达式评估为真,length === 1部分不会被评估,所以if语句的真正分支将永远执行。