javascript if conditional:object存在且附加了值

时间:2013-03-10 03:03:00

标签: javascript syntax conditional

在我的控制台中收到“分配中无效的左侧”错误。我在这里缺少语法吗?

if ($images[next] && images[next].loaded = false){
    //stuff
}

每个条件都会自行传递,但组合时会失败。

6 个答案:

答案 0 :(得分:1)

使用double equals进行比较。或者,你可以写:

var item = $images[next];
if (item && !item.loaded){
}

答案 1 :(得分:1)

应该是

if ($images[next] && $images[next].loaded == false){
    //stuff
}

或更好

var images = $images[next];
if (images  && images .loaded === false){
    //stuff
}

答案 2 :(得分:1)

使用单个=表示您正在为变量赋值。要进行比较,请使用=====进行严格的相等。

答案 3 :(得分:1)

正如大家已经告诉过你的那样,你应该使用==(或===)进行比较。导致错误的原因是赋值运算符=的{​​{3}}低于布尔&&运算符,与==或任何其他比较运算符不同。所以你的表达式被评估为:

($images[next] && images[next].loaded) = false

括号中的左侧部分可以是truefalse。所以这就变成了

true = false

false = false

两者都不允许,因为您无法将任何内容分配给布尔值(仅限于变量或对象属性)。因此,抛出赋值错误中的无效左侧。

当您使用正确的比较运算符时,优先级规则会使其得到如下评估:

$images[next] && (images[next].loaded == false)

变为true && truetrue && falsefalse && falsefalse && true,最后只有truefalse,这就是if语句期望。

答案 4 :(得分:0)

在等式检查中可能有一个“==”而不是“=”会有帮助

if ($images[next] && images[next].loaded == false)
{
    //stuff
}

有关javascript比较运算符的列表,请查看here

答案 5 :(得分:0)

每个人都会说同样的话:... .loaded = false应该是... .loaded == false=是一个赋值运算符,==是一个比较运算符..

有时,只要someFunction()不返回false或抛出错误(就像你的情况一样),你会看到运行代码块的if (x = someFunction())

如果您有任何疑问,请告诉我们。)

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators