[英]Can someone explain the steps of execution of code?
function f() {
var a = 1;
a = 2;
var b = g();
a = 3;
return b;
function g() {
return a;
}
}
f(); // returns '2'
f() 2 執行后如何?
開始了:
您聲明a = 1
,然后將其設置為2
,現在將 b 設置為 2 ,因為函數g()
返回 2 ,因為在那一刻您調用了此函數a = 2
。
現在您將a
設置為 3。
你的函數返回b
並且 b 在這種情況下是 2
只需按照代碼一步一步來
讓我們一行一行地看看會發生什么:
a is 1
a is 2
b is execution of g AT THIS POINT, which is a, which is 2
a is 3
return b, which is still 2
這就是為什么您將 2 視為返回值的原因,在賦值時,b 等於 a,即 2。
添加其他答案:在 Javascript 中,每個函數都有自己的范圍,並且可以訪問其中定義的變量。 但它也可以從“外部”范圍(聲明它的上下文)訪問變量。
在這種情況下, a
是f()
范圍內的變量,但由於g()
也在f()
的范圍內聲明,因此它也可以訪問a
。 這種場景在 JS 中也稱為閉包。 https://www.w3schools.com/js/js_function_closures.asp
執行后,函數f()
這個函數會看到什么是珍惜這將返回那么它將返回b
那么什么是價值b
它返回功能,這個函數的返回值a
則它會搜索有關的價值a
,它會取a => 2
最后修改值
then the rule is execute functions first
and then search about variable values that functions contains
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.