我讀in this article函數聲明只能出現在語句位置。我想知道這些「聲明職位」是什麼。在JavaScript中,「聲明職位」是什麼?
0
A
回答
6
這些「聲明位置」是什麼。
的地方在它是有效的把聲明代碼。
句法結構被分成組,其中之一是陳述。另一大組是表達式。一般來說,您可以考慮表達式生成值,而陳述描述了純粹稱爲「副作用」的內容。
例如,if
語句的結構是
if (<expression>) <statement>
一個if
語句的條件需要是表達和主體需要是語句。 A 陳述可以從來沒有被置於表達式的位置,因爲它不產生一個值。
例如,由於一個if
語句不表達式中的加法運算符被定義爲
<expression> + <expression>
,你不能這樣做
42 + if(...) {}
要了解更多關於哪些語句和表達式是可用的,你可以看看specification,但它不一定是一個簡單的閱讀。 YDKJS - Grammar可能會更容易理解。
我讀的函數聲明只能在語句中的位置出現。
它實際上比這更復雜一點。 函數聲明不是語句,它們是聲明。官方聲明僅在全局範圍的頂層和函數聲明中有效。但是,大多數環境允許在其他地方使用函數聲明,但不幸的是以不同方式評估這些情況。
因此,ECMAScript 6添加了兼容性規則來解釋這種行爲,但它不是應該依賴的東西。另請參閱Why is a function declaration within a condition block hoisted to function scope in Chrome but not Firefox?。
當文章說「函數聲明是一個聲明。「,那麼這肯定是一個簡化。
相關問題
- 1. 什麼是聲明
- 2. Javascript變量聲明:什麼是「var myVariable = {}」?
- 3. 什麼是'不是聲明'?
- 4. 在本聲明中,按位&的功能是什麼?
- 5. 爲什麼不是這個職位?
- 6. 什麼是指針聲明?
- 7. 這是什麼聲明?
- 8. 本聲明中的問題是什麼?
- 9. 本聲明中'$'的功能是什麼?
- 10. 什麼是函數聲明中的DEFAULT_CC?
- 11. 什麼是以下Ninject聲明中Structuremap
- 12. 這個類聲明中使用的Javascript的形式是什麼?
- 13. JavaScript函數聲明中$操作符的用途是什麼?
- 14. javascript中兩個聲明的區別是什麼?
- 15. JavaScript中的函數聲明之後的空括號()是什麼?
- 16. 什麼是JavaScript中的「影子標識符聲明」?
- 17. C++什麼放在一個類聲明,什麼不是
- 18. 爲什麼要在$(function(){...})中聲明?
- 19. 爲什麼人們在JavaScript中聲明爲null?
- 20. 這兩個函數聲明在JavaScript中有什麼區別?
- 21. 爲什麼變量在Javascript中的函數之前聲明
- 22. 爲什麼在Javascript中包含變量聲明for循環?
- 23. 之後如果聲明什麼都不會在javascript中觸發
- 24. 爲什麼jslint喜歡在JavaScript中分割變量聲明?
- 25. 當我們在JavaScript中聲明Array(4)時會發生什麼?
- 26. 在javascript中爲什麼我們使用var來聲明變量?
- 27. 什麼是關鍵詞的幾許的意義JavaScript的聲明
- 28. 什麼是JavaScript的語義的聲明如果
- 29. 這兩個不同的JavaScript聲明的目的是什麼?
- 30. 準備好的聲明是什麼?
有更多背景,你讀什麼? – David
地方它是有效的把語句。比如'如果()'的一個'if'聲明需求主體是一個聲明,而條件必須是一個表達式。但是,這其實不完全正確的。函數聲明不聲明和正式,並非在所有的語句位置有效,但大多數環境允許,但採用不同的評價規則TL;博士:。它的複雜 –
@大衛這是一個博客的文章,我不知道如果我能在這裏分享的鏈接 – marco