簡體   English   中英

函數提升和return語句

[英]Function hoisting and the return statement

我希望此函數(為方便起見而減少)可以順利運行,但是由於fn2 is not defined而失敗:

void function(){
    var var1 = fn1();
    var var2 = fn2();

    function fn1(){};

    return function fn2(){};
}();

return語句如何從提升中排除fn2的函數表達式?

僅提升使用函數聲明創建的函數。 return function fn2(){}; 使用(命名的)函數表達式創建的,因此不會被吊起。

如何評估函數取決於上下文。 語句(例如return語句)中的任何函數都將解析為函數表達式。 另一個示例是在IIFE中使用括號:括號充當分組運算符,確保將括號的內容作為表達式求值。

可以在Kangax的出色文章中找到許多有關此的信息:

http://kangax.github.io/nfe/

暫無
暫無

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

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