Javascript 每个评估方向的动态范围界定

Javascript 每个评估方向的动态范围界定,javascript,scope,dynamic-scope,Javascript,Scope,Dynamic Scope,鉴于以下[任意语言,尽管我认为这是ALGOL]程序: program main; // A main parent level var i : integer; // A 'global' variable (* Note that all parameters are passed by value here *) function f1 (j : integer) :

鉴于以下[任意语言,尽管我认为这是ALGOL]程序:

program main;                               // A main parent level
  var i : integer;                          // A 'global' variable

  (* Note that all parameters are passed by value here *)

  function f1 (j : integer) : integer;      // A Child function
  begin { f1 }
    i := i + 3;
    f1 := 2 * j - i;
  end; { f1 }

  function f2 (k : integer) : integer;      // Another Child function, same level as f1
    var i : integer;                        // Here, there is a variable that is declared
  begin { f2 }                                 // but no value assigned
    i := k / 2;
    f2 := f1(i) + f1(k);
  end; { f2 }

begin { main }                              // Running/Calling/Executing the code
  i := 8;
  i := i + f2(i);
  writeln(i);
end. { main }
您将如何在整个程序中使用动态作用域在两个方向上显示值,从左到右求值,然后使用javascript从右到左求值,这样我就可以交互式地更改值并观察发生了什么

在一些问题上,我学习得稍慢一些,比如要求输出值,但不在整个程序中显示值状态,并试图更好地理解,特别是在一个我可以交互处理的示例中

我为您创建了一个plnkr 还有一个
请随意为他们提供交互式答案:。

嗯?这是JavaScript?我想我不明白你想用它实现什么,这和动态范围有什么关系。JS只有词法作用域。交叉发布在SO:。请不要交叉张贴,因为它违反了网站规则、碎片和答案,并导致人们浪费时间回答一个问题,而没有意识到另一个副本已经得到了答案。这是交叉张贴在Computer Science StackExchange上的。我已经为版主支持做了标记,他们可以做任何事情来处理交叉列表。