我已經閱讀了很多JavaScript教程,我相信我知道許多事情,直到現在。所以我認爲用這種語言寫一些腳本是個好主意。我的問題是,我不知道這行確實:這行代碼包含'||'在JavaScript中呢?
var b=Number(ls.autofarm)||0,g,h,i,d,j;
我知道這行的基礎知識,該變量的名稱爲b,它具有數(Is.autofarm)的值|| 0,g,h,i,j,但爲什麼「||」正在使用?如果有人能向我解釋這條線是什麼,那將會很棒。
我已經閱讀了很多JavaScript教程,我相信我知道許多事情,直到現在。所以我認爲用這種語言寫一些腳本是個好主意。我的問題是,我不知道這行確實:這行代碼包含'||'在JavaScript中呢?
var b=Number(ls.autofarm)||0,g,h,i,d,j;
我知道這行的基礎知識,該變量的名稱爲b,它具有數(Is.autofarm)的值|| 0,g,h,i,j,但爲什麼「||」正在使用?如果有人能向我解釋這條線是什麼,那將會很棒。
||
在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
由於技術上'null'和其他一些值不是'false'而是'falsey',所以最好使用術語「falsey」或某物而不是「false」。 – 2013-05-02 01:35:22
你的回答是錯誤的。如果Number(ls.autofarm)是虛假的,變量'b'將導致'j'。這是因爲逗號運算符總是返回__last__表達式(即'j'不是'0')。改變這一點,我會刪除downvote。 – 2013-05-02 01:46:43
不,在這種情況下,逗號終止變量定義。從Chrome控制檯: > J = 「Ĵ在這裏」 「Ĵ在這裏」 > LS = { 'autofarm':假} 對象{autofarm:假} >變種B =號碼(ls.autofarm) || 0,G,H,I,d,J; undefined > b > j 「j在這裏」 – 2013-05-02 01:52:40
這是有關部分(其它字母都只是變量聲明):
var b=Number(ls.autofarm)||0
如果Number(ls.autofarm)
評估爲true
然後它會被分配到b
。如果它的計算結果爲false
,則0將被分配給b
。
相反,如果'Number(ls.autofarm)'是「truthy」,它將被分配給b。 – numbers1311407 2013-05-02 01:33:08
謝謝大家!我明白了。 – user2341330 2013-05-02 08:47:25
線
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-02 01:37:27
當然,這也是一個很好的觀點,可以提醒人們注意編程* *不要編寫這樣的代碼。 :D儘管在學習語法如何工作的規則方面,這是一個很酷的練習。 – jmort253 2013-05-02 01:59:46
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;
||
是邏輯OR運算符的變量減速,至極也是在JavaScript中falsey coalscing操作者,至極意味着它的計算結果爲表達式的左側,如果該值不虛假的,否則它評估到右側的價值。
Falsey值是:false
,空字符串''
,0
,null
,undefined
和NaN
的||
經常被用來提供缺省值。
function (someArg) {
someArg = someArg || 'test'; // 'test' if someArg is falsey
}
當有多個||
運營商,這裏是它的計算:
var a = 0 || '' || true || false;
0 || ''
,至極返回''
'' || true
,至極返回truetrue
將被退回。請注意,多個變量可以用一個var
語句聲明和初始化,就像在你的例子中一樣。
var b = Number(ls.autofarm) || 0, g, h, i, d, j;
上述初始化b
到Number(ls.autofarm) || 0
並聲明g
,h
,i
,d
,j
變量。
是什麼讓你相信這是b的正確值? – 2013-05-02 01:29:21
我建議花一些時間理解[邏輯運算符](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators#Logical_operators)。 – Marty 2013-05-02 01:30:44
[Javascript中的「options = options || {}」是什麼意思?](http://stackoverflow.com/questions/2851404/what-does-options-options-mean-in-javascript)和潛在的重複[許多,許多,許多其他](http://stackoverflow.com/search?q= [javascript] +%22 ||%22)。 – 2013-05-02 02:47:16