2016-10-13 25 views

回答

5

因爲它被聲明爲函數參數:

const foo = { 
    bar(baz) { 
//  ^-------- here 

     if (!baz) 
      baz = 1; 
    } 
} 

bar是功能使用ES2015 method definition語法聲明)

如果沒有一個參數,例如像這樣:

const foo = { 
    bar() { 
//  ^----------------- no baz 
     if (!baz) 
      baz = 1; 
    } 
} 

...然後當foo.bar()被調用時,如果baz沒有定義,這將是一個ReferenceError(因爲Horror of Implicit Globals 只適用於分配了未聲明的符號,而不是從他們閱讀)。


我們經常稱這些「論據」鬆散的,但「說法」在技術上是一個給定的呼叫傳遞的實際值;見MDNWikipedia的區別。

這是我的貧血小博客上的一篇文章。

+0

我正要回答同樣的問題。 –

+0

感謝您的詳細解答! – Edgar

2

因爲它是一個parameter.

包括它在函數聲明隱式聲明它給定的功能範圍。

1

因爲您將它設置爲函數的參數。爲了使var變成'全局'(這可能削弱程序的彈性,應該避免),你應該在你的函數之外聲明它。

相關問題