今天看到了一些我從未見過的JS表示法,如果這是大家都知道的共同點,請耐心等待。Javascript定義變量表示法問題
var cookiepath = cookiepath || '';
現在,這只是說,如果一個名爲cookiepath變量已經存在,將其設置爲cookiepath或者如果它不,它設置爲「」?
今天看到了一些我從未見過的JS表示法,如果這是大家都知道的共同點,請耐心等待。Javascript定義變量表示法問題
var cookiepath = cookiepath || '';
現在,這只是說,如果一個名爲cookiepath變量已經存在,將其設置爲cookiepath或者如果它不,它設置爲「」?
cookiepath
變量正在被聲明,初始化。
如果已經在當前詞法範圍中聲明瞭標識符,則var
語句不會造成任何傷害。
如果cookiepath
尚未聲明,var
語句在運行時會將變量初始化爲undefined
。
之後,在運行時,在作出轉讓,如果它的值是falsy(除null
,undefined
,一個空字符串,0
,NaN
,或false
)將它設置爲空字符串。
請記住,您可以訪問本地範圍中的cookiepath
變量。
請看下面的例子:
var cookiepath = 'outer';
(function() {
var cookiepath = cookiepath || "";
alert(cookiepath); // alerts an empty string, not "outer"
})();
在上面的例子,我們有一個全球性的cookiepath
變量,在全球範圍內,但在執行功能時,本地cookiepath
變量將在範圍內聲明的功能,而這個陰影外範圍的價值,而這種行爲是明顯的,甚至在功能上var
語句之前,例如:
var foo = 'foo';
(function() {
alert(foo); // undefined, not 'foo' from the outer scope
var foo; // undefined
})();
你是對的。
||
運算符評估爲它的第一個「truthy」操作數。
如果第一個操作數是「truthy」,則第二個操作數根本不會被評估。
(如果沒有操作數是truthy,它計算到第二個)
Truthy意味着什麼,但undefined
,null
,false
,0
,NaN
,或""
。
爲@SLaks說,它的計算結果爲第一個真正所以這段代碼將導致錯誤的執行:
var cookiepath = false;
var cookiepath = cookiepath || "";
# cookiepath === ""
這是一種方法來提供一個默認值。
這裏,cookiepath將只得到分配值',如果它的價值是null
,false
,undefined
,0
,空字符串,或NaN
。否則,它將保持不變。
可能重複的[使用Javascript ||操作者(http://stackoverflow.com/questions/1378619/javascript-operator) – Guffa 2010-11-15 15:14:23