我剛開始閱讀一些JavaScript項目。大部分的js文件的開始與有一個對象聲明如下:或JavaScript對象聲明的符號
window.Example || {
bleh: "123";
blah: "ref"
}
什麼是||
符號在這裏做?
我剛開始閱讀一些JavaScript項目。大部分的js文件的開始與有一個對象聲明如下:或JavaScript對象聲明的符號
window.Example || {
bleh: "123";
blah: "ref"
}
什麼是||
符號在這裏做?
Javascript中的對象是真實的,因此如果window.Example
是虛假(或未定義),則表達式計算結果爲window.Example
或默認對象。例如:
var x = window.Example || {foo: 'bar'};
// x = {foo: 'bar'}, since window.Example is undefined
window.Example = {test: 1};
var y = window.Example || {foo: 'bar'};
// y = {test: 1}, since window.Example is truthy (all objects are truthy)
讀對truthy/falsy和短路評價一個很好的解釋。
我認爲鏈接被破壞。 – user1240679 2012-03-27 18:22:23
@ user1240679謝謝你讓我知道!它需要一個尾隨正斜槓哈哈。我修好了它。 – Paulpro 2012-03-27 18:32:21
有從代碼中缺少一個重要的一點 - 變量聲明:
var something = window.Example || {
bleh: "123",
blah: "ref"
}
這大致翻譯爲「設置something
到window.Example
,除非它不存在,然後將其設置到這個新的對象」。
JavaScript中的||
運算符是像其他類似C語言中的「或」運算符,但它明顯不同。它的意思是:
true
,則該子表達式的值(之前脅迫布爾值)是||
表達||
表達式的值。因此它的使用慣用初始化一些可能已經被初始化:
var something = window.something || defaultValue;
只是手段,「請檢查‘東西’是一個truthy值window
對象的屬性,以及如果不是,則將其設置爲defaultValue。「
@MikeSamuel感謝您解決我的錯別字:-) – Pointy 2012-03-27 18:12:39
這不是有效的JavaScript。但是在SO上這已經被問過一千次了。 – 2012-03-27 18:06:30
使用這種技術時要小心,如果你的'window.Example'屬性可以是0,空字符串,假等。 – jbabey 2012-03-27 18:12:50