2

我已经阅读了很多 javascript 教程,并且我相信我知道很多事情直到现在。所以我认为看一些用这种语言编写的脚本是个好主意。我的问题是我不知道这条线的真正作用:

var b=Number(ls.autofarm)||0,g,h,i,d,j; 

我知道这些行的基础知识,变量名是 b,它的值是 Number(Is.autofarm)||0,g,h,i,j,但为什么是“||” 正在使用?如果有人可以向我解释这条线的作用,那就太好了。

4

5 回答 5

3

||在 javascript 中,通常用作提供默认值的一种方式。第一个非假值或找到的最后一个值“获胜”。

例如

var a = "foo";
var b = null;
var c = a || 2;   // c == "foo". a was non-false, so we use that
var d = b || 2;   // d == 2.  b was false (null, 0, "" are all false), so we moved along

在你的情况下,

// b == Number(ls.autofarm), unless that's false/null/undefined. Then we use 0
var b = Number(ls.autofarm) || 0,
g,h,i,d,j;      // a bunch of other variables
于 2013-05-02T01:31:49.003 回答
2

线

var b=Number(ls.autofarm)||0,g,h,i,d,j; 

如果能帮助你理解,可以分成两部分。

var b = Number(ls.autofarm)||0;
var g,h,i,d,j; 

第二行是空变量的声明,而第一行是用值声明 b。如果 || 左侧的值 是假的,使用右边的值。在这种情况下,如果 Number(ls.autofarm) 为 false,则 b 将为 0。

于 2013-05-02T01:32:34.473 回答
1

var b=Number(ls.autofarm)||0,g,h,i,d,j;

在我看来, b 取决于 ls.autofarm 的值或只是 0(零)。

另一个 g,h,i,d,j; 是变量的减速类似于

var b=Number(ls.autofarm)||0;
var g;
var h;
var i;
var d;
var j;
于 2013-05-02T01:33:20.590 回答
0

||是逻辑 OR 运算符,它也是 JavaScript 中的假合并运算符,这意味着如果值不为假,则计算表达式的左侧,否则计算右侧的值。

Falsey值为:false空字符串 ''0nullundefinedNaN

通常||用于提供默认值。

function (someArg) {
    someArg = someArg || 'test'; // 'test' if someArg is falsey
}

当有多个||运算符时,它的评估方式如下:

var a = 0 || '' || true || false;
  1. 它首先评估0 || '',然后返回''
  2. 然后它评估'' || true,返回 true
  3. 此时,表达式不会被进一步计算,而是true返回。

请注意,可以使用单个var语句声明和初始化多个变量,就像在您的示例中一样。

var b = Number(ls.autofarm) || 0, g, h, i, d, j;

以上初始化bNumber(ls.autofarm) || 0声明了g, h, i, d,j变量。

于 2013-05-02T01:47:42.547 回答
0

这是相关部分(其他字母只是变量声明):

var b=Number(ls.autofarm)||0

如果Number(ls.autofarm)评估为true那么它将被分配给b。如果计算结果为,false则将分配给 0 b

于 2013-05-02T01:32:30.840 回答