每个评估方向的动态范围

时间:2014-10-23 16:37:37

标签: 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) : 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,我可以交互式地更改值并观察会发生什么?

我对某些问题的学习速度有点慢,其中输出的值是值,但是在整个程序中没有显示值状态,并试图更好地理解,特别是在我可以玩的例子中交互式地。

我为Static Scoping Left to Right创建了一个plnkr 和Static Scoping Right to Left的另一个 随意分享他们的互动答案:)。

0 个答案:

没有答案