我遇到过这条线,我不确定它是如何做到的。数据部分是一个json对象,稍后,“myarray”变量用于将新变量分配给数组。
“myItems”对象用于在数据对象中的对象上迭代.map函数。但我不知道如何通过以下代码分配这一切:
var myItems = data || [], myarray;
答案 0 :(得分:3)
它声明了两个全局变量myItems
和myarray
。如果数据未定义,我的项目将被分配数据,如果数据未定义,则会为myItems
分配一个空数组。
由于Javascript中变量的虚假或虚假性质,可以在赋值期间使用||
运算符。
Javascript中的几个值等于false,例如空字符串""
或未定义。其他如String literal!=“”(示例“Test”)和对象将等同于true。当在赋值中使用时,如果第一个表达式等于true,则不会评估进行||
的代码部分。
这link更好地描述了真实和虚假。
答案 1 :(得分:3)
另一种写这个的方法是:
var myItems;
if (data) {
myItems = data;
} else {
myItems = [];
}
var myarray;
答案 2 :(得分:1)
这行代码执行以下操作:
myarray
和myItems
变量。data || []
表示如果计算结果为true(非空),则取data
,否则取新的空数组。这是一种提供后备/默认值的javascript助记符。myItems
所以,最好写成
var myarray;
var myItems = data || [];
答案 3 :(得分:-1)
在这里,您要定义两个名为data
和myarray
的变量(请注意逗号)。
此处轻微滥用||
(逻辑OR运算符)。声明
var myItems = data || [];
如果data
不是,那么会将myItems
的值分配给data
。但是,如果 是假的,myItems
将被初始化为[]
的空数组。由于延迟评估,如果data != false
,则不执行该语句的其余部分。