1

我遇到了这条线,我不确定它是如何做到的。数据部分是一个 json 对象,稍后,“myarray”变量用于将新变量分配给数组。

“myItems”对象用于遍历数据对象中的对象的 .map 函数。但我不知道这一切是如何通过下面的代码分配的:

var myItems = data || [], myarray;
4

4 回答 4

3

它声明了两个全局变量myItemsmyarray. 如果未定义数据,则为我的项目分配数据,如果未定义数据,则将空数组分配给myItems.

由于||Javascript 中变量的真假性质,可以在赋值期间使用运算符。

Javascript 中有几个值等于 false,例如空字符串""或未定义。其他字符串文字 != "" (例如“Test”)和对象将等同于 true。在赋值中使用时,||如果第一个表达式等于 true,则不会计算继续进行的代码部分。

这个链接更好地描述了真假。

于 2013-05-03T15:54:20.010 回答
3

另一种写法是:

var myItems;
if (data) {
    myItems = data;
} else {
    myItems = [];
}

var myarray;
于 2013-05-03T15:56:16.833 回答
1

这行代码执行以下操作:

  • 它声明myarraymyItems变量。
  • data || []意味着data如果评估为真(非空),则采用新的空数组。这是一种提供后备/默认值的 javascript 助记符。
  • 将上一步的结果分配给myItems

所以,最好写成

var myarray;
var myItems = data || [];
于 2013-05-03T15:56:05.973 回答
-1

在这里,您定义了两个名为dataandmyarray的变量(注意逗号)。

||逻辑或运算符)在这里被轻微滥用。该声明

var myItems = data || [];

如果不虚假,分配datato的值。但是,如果它假的,将被初始化为一个空数组。由于惰性求值, if ,不执行语句的其余部分。myItemsdatamyItems[]data != false

于 2013-05-03T15:55:12.690 回答