出的只是知識的好奇心,爲什麼JavaScript的接受Javascript:z = z ||不使用VAR時,[]會拋出錯誤 - 爲什麼?
var z = z || [];
初始化Z(如z可最初定義)
但沒有變種,它拋出一個錯誤(在全球空間)
z = z || [];
(如果Z先前未定義)
在全球空間,您不需要使用VAR雖然我得到它可能b不好的做法。
之前你說這是一個問題,如
What is the purpose of the var keyword and when to use it (or omit it)?
注意的聲明重複「如果在全球範圍內是那麼有沒有什麼區別。」
顯然這不是100%真實的,因爲我的工作示例。
這是一個怪癖還是有合法的邏輯?
添加答案的總結,因爲我已經學會了:
感謝Tim(見下文)的關鍵,我的誤解並沒有意識到這一點(基本的javascript)
var z;如果z已經存在,則絕對不會執行任何操作。
如果您不正確地假定「var z」總是初始化,那麼這就是這種表達式似乎具有的方式。
從左側開始,「var z」只是確保z已定義,但實際上並不影響現有值(如果已存在)。然後在右邊,如果z已經存在,則使用它,如果不存在,則該變量剛剛聲明(但爲空),因此它不會被使用,但不會引發錯誤。
這是對這種確定範圍和在Javascript吊裝問題的一個很好的文章: http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
非常感謝MiniTech移動和其他人誰貢獻呢!
作爲一般規則:複製實際的錯誤信息通常比寫入「拋出錯誤」更有幫助。 – 2012-01-30 16:04:54