2011-08-19 22 views

回答

25

||運算符返回左操作數,如果它評估爲真,否則它計算並返回右操作數。換句話說,a || b相當於a ? a : b,只不過a只評估一次。

+1

+1在JavaScript中也稱爲* null合併運算符* http://stackoverflow.com/questions/476436/null-coalescing-operator-for-javascript/476445#476445 – naveen

+1

不,它可以用作*替換*爲C#的空合併運算符('??')。 :)我從來沒有聽說過'||'叫做「空合併運算符」;它一直是「邏輯或」操作符。 – cdhowie

+0

表示同意。從OP的前面的問題,他是從ASP.NET的背景,這就是爲什麼澄清。 – naveen

2

這會初始化myObj,除非它已被定義。

1

||是一個短路操作員。如果第一個操作數的計算結果爲true,則不計算第二個操作數。

因此JS a || b是類似於C#a ?? b

0

如果myObj未定義或空值,則它的計算結果,其創建新的空的對象

所以myObj要麼MyObj中,如果它在的||右側的表達不爲空或空對象,如果MyObj中是空

我希望你明白我的意思

+1

另外,如果'myObj'的值是false或0或NaN或空字符串,它也會導致變量被分配一個新的對象。它不是**只是**未定義或爲空。 JavaScript中有6個虛假的東西。 –

+0

@Ray Toal:謝謝你的加入 – Fender

1

的或OP(||)將返回第一個非空/ false參數。

在這種情況下指定的,如果MyObj中是虛假或無效,將被設置爲一個空對象(括號{}用於創建對象)

1

您可以使用此結構來獲取是對象而不是nullundefined等。這用於後面在代碼中使用myObj的情況,該代碼要求它是對象。如果由於某種原因,myObj在此行之前未定義,則重新分配它將使其保留undefinednull,在這種情況下,它將被分配爲{}

你可以認爲這是:

// If the object is already defined 
if (myObj) 
    var myObj = myObj; 
// It was undefined or null, so assign an empty object to it. 
else 
    var myObj = {}; 
2

要理解||運算符,我們先來看一個相當基本的例子。邏輯OR運算符可被用來爲一個定義的變量提供一個默認值如下:

var bar = false, 
foobar = 5, 
foo = bar || foobar; // foo = 5 

在這種情況下,FOO將僅在杆falsy認爲是分配foobar的值。假想值可以被認爲等於0,假,未定義,空,NaN或空(例如「」)。