簡體   English   中英

有人可以解釋代碼的執行步驟嗎?

[英]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 中,每個函數都有自己的范圍,並且可以訪問其中定義的變量。 但它也可以從“外部”范圍(聲明它的上下文)訪問變量。

在這種情況下, af()范圍內的變量,但由於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.

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