在我的控制台中收到“分配中无效的左侧”错误。我在这里缺少语法吗?
if ($images[next] && images[next].loaded = false){
//stuff
}
每个条件都会自行传递,但组合时会失败。
答案 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
括号中的左侧部分可以是true
或false
。所以这就变成了
true = false
或
false = false
两者都不允许,因为您无法将任何内容分配给布尔值(仅限于变量或对象属性)。因此,抛出赋值错误中的无效左侧。
当您使用正确的比较运算符时,优先级规则会使其得到如下评估:
$images[next] && (images[next].loaded == false)
变为true && true
,true && false
,false && false
或false && true
,最后只有true
或false
,这就是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