gpt4 book ai didi

javascript - 在没有闭包/包装函数的情况下获取范围内的变量

转载 作者:行者123 更新时间:2023-11-28 13:03:51 24 4
gpt4 key购买 nike

如果我有一个随时间变化的变量,并且我想保留它的特定实例,我必须将它包装在一个闭包中,如下所示:

function test(){
var x = Math.random();
// Is there an alternative to using the following closure:
var printnum = (function(num){
return function(){
console.log(num);
}
})(this.x); // Because I think this is ugly

return printnum;
}

var a = test();
var b = test();

a(); //number
a(); //same as above
b(); //different number
b(); //same as above

在 PHP 中,您可以像这样使用 use:

$a = rand();
function () use ($a) {
echo($a);
}

我真的很欣赏这一点,因为你可以立即看到正在注入(inject)哪个变量,它不像 js 那样列在最底部: (function(b){})(a); 另外还有括号的数量不要过多。我尝试使用 .apply().call() 进行实验,但它们都执行该函数,我只想在某种状态下注入(inject)一个变量。

我想我只是要求一种不存在的语言功能,但请证明我错了。有什么想法吗?

最佳答案

使用 .bind() (ES5) 删除包装函数并避免关闭的简单方法:

function test(){
return console.log.bind(console, Math.random());
}

关于javascript - 在没有闭包/包装函数的情况下获取范围内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48120519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com