在Javascript中Tcl的'uplevel'相当于什么?

问题描述 投票:1回答:1

Tcl的uplevel命令将eval提供的字符串在比当前子例程更高的堆栈帧中。

Javascript中有等价的吗?

javascript stack tcl eval
1个回答
2
投票

在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宏扩展(尽管也不一样)。

© www.soinside.com 2019 - 2024. All rights reserved.