0

我正在閱讀Mozilla Developer Network's page on Javascript,並且被我看到的一條線弄糊塗了。這裏是有問題的說明及行:基本的Javascript,評估一個簡單的變量賦值/邏輯語句

的& &和||操作員使用短路邏輯,這意味着他們是否執行第二個操作數取決於第一個操作數。這是檢查空對象很有訪問他們的屬性之前:

var name = o && o.getName(); 

這裏我的困惑是,大概是片斷的目的是執行:

var name; 
if (o){ 
    name = o.getname(); 
} 

但是,它看起來像這裏發生的事情是該名稱被分配了一個布爾值,並且該布爾值爲「存在並且其名稱不爲空」。換句話說,對我來說,它看起來像:

var name = false; 
if (o && o.getname()){ 
    name = true; 
} 

謝謝!

+2

看一看[**邏輯運算符**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators),在最高層: *「邏輯運算符通常與布爾(邏輯)值一起使用;當它們是時,它們返回一個布爾值,然而,&&和||運算符實際上會返回其中一個指定操作數的值,所以如果這些運算符與「* –

+1

簡而言之,'&&'返回它最左邊的falsy操作數,或者最後一個如果所有這些都是truthy,並且'||' - 最左邊的真值操作數,或者如果所有這些都是虛假的,則是最後一個。 – raina77ow

+0

你的問題到底是什麼?是的,這個片段做了一些事情,但對你來說,它應該做一些其他的事情。那麼,問題是什麼? *爲什麼?*因爲這是它的編譯方式...... –

回答

2

這個答案是Felix Kling的評論,我希望他將發佈它作爲了自己的答案,以獲得獎勵的聲譽


看一看Logical Operators,在最高層:

「邏輯運算符通常與布爾(邏輯)值一起使用;當它們返回布爾值時,實際上r eturn其中一個指定操作數的值,所以如果這些操作符與非布爾值一起使用,它們可能會返回一個非布爾值。「