这行包含'||'在JavaScript中做

What does this line of code containing a '||' in JavaScript do?

本文关键字:JavaScript 中做 包含      更新时间:2023-09-26

我读了很多javascript教程,我相信我知道很多东西。所以我认为这将是一个好主意,看看一些脚本写在这种语言。我的问题是我不知道这一行到底是做什么的:

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

我知道这一行的基本知识,变量名是b,它的值是Number(is .autofarm)||0,g,h, I,j,但是为什么使用"||"呢?如果有人能给我解释一下这一行是做什么的就太好了。

||在javascript中经常被用作提供默认值的方式。第一个非假值,或者找到的最后一个值"wins"。

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

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

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

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

第二行是空变量的声明,而第一行是用值声明b。如果"||"左边的值为falsey,则使用右边的值。在本例中,如果Number(ls.autofarm)为false,则b将为0。

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

在我看来b取决于ls的值。autofarm OR = 0

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

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

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

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

如果Number(ls.autofarm)计算结果为true,则将其分配给b。如果计算结果为false,则将0赋值给b

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

假值为:false空字符串 '', 0, null, undefinedNaN

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

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;

上面将b初始化为Number(ls.autofarm) || 0,并声明了g, h, i, d, j变量