Javascript 每个评估方向的动态范围界定
鉴于以下[任意语言,尽管我认为这是ALGOL]程序: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) :
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上的。我已经为版主支持做了标记,他们可以做任何事情来处理交叉列表。