Tcl的uplevel命令将在比当前子例程更高的栈帧中eval所提供的字符串。
在Javascript中有没有等价物?
发布于 2018-03-03 15:55:12
在Tcl中使用uplevel的最常见情况是在JS中通过让调用者传入一个匿名函数来完成的。(有时需要使用变量作用域上的技巧。)
proc iterSquares {var script} {
upvar 1 $var v
for {set i 0} {$i <= 10} {incr i} {
set v [expr {$i ** 2}]
uplevel 1 $script
}
}
iterSquares x {
puts "I've got a $x"
}function iterSquares(callback) {
for (var i = 0; i <= 10; i++) {
callback(i ** 2);
}
}
iterSquares(function(x) {
console.log("I've got a", x);
});但没有真正等同于更一般的形式,它们在许多方面更像Lisp宏扩展(尽管也不是相同的)。
https://stackoverflow.com/questions/49079337
复制相似问题