簡體   English   中英

“函數定義可能不會出現在語句中”的含義是什么

[英]What's the meaning of “Function definitions may not appear within statements”

“函數定義可能不會出現在if語句,while循環或任何其他語句中”的含義是什么。 我對這句話很困惑。

您在書中所讀內容的一個問題是,在某些瀏覽器中,函數定義(與函數賦值不同)實際上被提升到宿主函數的頂部,因此將其放入語句中(例如,在if語句中) )是完全誤導的。 該代碼使它看起來僅在if語句的該分支執行時才定義該函數,但不一定如此。 因此,這是一個不好的做法。 它可能在許多情況下都有效,但這是一個壞習慣。

因此,而不是這樣:

function main(foo) {
    if (foo) {
        function internal() {
            // code here
        }
        // code here
    }
}

將內部功能放在頂部;

function main(foo) {
    function internal() {
        // code here
    }
    if (foo) {
        // code here
    }
}

僅供參考,在嚴格模式下,內部函數定義僅在頂部。 條件函數的分配始終可以使用以下語法完成:

var internal;
if (foo) {
    internal = function() {}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM