这行包含'||'在JavaScript中做
What does this line of code containing a '||' in JavaScript do?
我读了很多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
, undefined
和NaN
||
通常用于提供默认值。
function (someArg) {
someArg = someArg || 'test'; // 'test' if someArg is falsey
}
当有多个||
操作符时,计算方法如下:
var a = 0 || '' || true || false;
- 首先计算
0 || ''
,返回''
- 然后计算
'' || true
,返回true - 此时,表达式将不再求值,并返回
true
。
请注意,可以使用单个var
语句声明和初始化多个变量,就像您的示例一样。
var b = Number(ls.autofarm) || 0, g, h, i, d, j;
上面将b
初始化为Number(ls.autofarm) || 0
,并声明了g
, h
, i
, d
, j
变量
- 这在javascript中做了什么
- <<在JavaScript中做什么
- {lang:(?:da|en)}在Javascript中做什么
- 原型在Javascript中做什么
- this.async() 在 JavaScript 中做了什么
- 将Dart与HTML一起使用(我可以在Javascript中做的事情)
- 有谁知道 <<= 在 javascript 中做了什么
- “数字”函数在 JavaScript 中做什么
- % 在 JavaScript 中做什么
- string.indexOf("*.")在Javascript中做什么?
- 一个open:函数在javascript中做什么?
- 我如何在Javascript中做跨域http请求
- 什么是“;var”;在JavaScript中做什么?为什么有时它是作业的一部分
- 这行包含'||'在JavaScript中做
- [].forEach.call() 在 JavaScript 中做了什么?
- 在javascript中做while循环异步的正确方法
- 如何在Javascript中做一个不会阻塞UI的循环
- Javascript中做减法的小数太多了
- 这段代码“obj && obj.myFunction();”在javascript中做了什么
- 符号(@)在ES6 javascript中做什么?(ECMAScript 2015)