首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Javascript中,Tcl的“uplevel”相当于什么?

在Javascript中,Tcl的“uplevel”相当于什么?
EN

Stack Overflow用户
提问于 2018-03-03 08:23:50
回答 1查看 164关注 0票数 1

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

在Javascript中有没有等价物?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-03 15:55:12

在Tcl中使用uplevel的最常见情况是在JS中通过让调用者传入一个匿名函数来完成的。(有时需要使用变量作用域上的技巧。)

代码语言:javascript
复制
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"
}
代码语言:javascript
复制
function iterSquares(callback) {
    for (var i = 0; i <= 10; i++) {
        callback(i ** 2);
    }
}

iterSquares(function(x) {
    console.log("I've got a", x);
});

但没有真正等同于更一般的形式,它们在许多方面更像Lisp宏扩展(尽管也不是相同的)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49079337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档