JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了关闭:等效于JavaScript中的“使用”关键字或C捕获列表或透明语言大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP中,我们有一个整洁的关键字,允许在使用闭包时使用“外部”变量,如下所示:
$tax = 10;
$@R_717_10586@lPrice = function ($quantity,$pricE) use ($taX){  //mandatory 'use'
    return ($price * $quantity) * ($tax + 1.0);
};

如果我们省略使用($taX)部分,它会抛出一个错误,我非常喜欢.

类似地,在C 11中,我们也这样做,用括号指定外部变量,称为capture list

float tax = 10;
auto @R_717_10586@lPrice = [tax](int quantity,float pricE){   //mandatory []
   return (price*quantity) * (tax + 1.0);
};

如在php中,如果忽略捕获列表,它将抛出错误.

在Javascript中,我们没有这个使用关键字(或c [])的等价物,我们只做:

var tax = 10;
var @R_717_10586@lPrice = function (quantity,pricE){  //no need for 'use' or similar
    return (price * quantity) * (tax + 1.0);  //tax is usable here :(
};

我不喜欢这种自由,我强烈地希望指定由闭包函数可访问的变量,否则由于此问题范围之外的原因而得到错误.

所以,我想知道,在ES6中是否有一个特殊的关键字或操作符,或是以任何语言转载给javascript? (CoffeeScript,TypeScript等)如果是这样,哪种语言和什么语法?

理想情况下,我想在透明时间(或之前)中检测到,当变量未被明确地“授权”在闭包中使用时,就像php / C一样.

提前致谢

PS:请不要问我为什么要用类似js的语言来这个辩论是另一个话题.

编辑:执行此检查的短信也将有所帮助

解决方法

不幸的是,你可以想象出这个关键字使用在javascript中并不存在,但是要实现你正在寻找的结果有几种方法.

所以这是你的例子,其中@R_717_10586@lPrice是一个功能,税是全球性的.

// Your example
var tax = 10;
var @R_717_10586@lPrice = function (quantity,pricE) {
    return (price * quantity) * (tax + 1.0);
};
var price = @R_717_10586@lPrice(1,1);
console.log ("Price YE is : " + pricE);

所以我认为,模拟更多关键字使用的解决方案可能是生成一个在子范围内初始化税并返回函数的函数:

// Example 1 return function
function generatePriceCalculator(taX) {
    return function(quantity,pricE) {
        if ("undefined" === typeof taX) {
            throw "tax is undefined";
        }

        return (price * quantity) * (tax + 1.0);
    };
};

var priceCalculator = generatePriceCalculator(20);
var price1 = priceCalculator(1,1);
console.log ("Price Example 1 is : " + price1);

正如你可以看到generatePriceCalculator在返回的函数中设置tax的值.

另一个选择是生成外部函数来调用闭包.

// Example 2 function return tax
function getTax() {
    return 30;
}
var @R_717_10586@lPrice2 = function (quantity,pricE) {
    var tax = getTax();
    return (price * quantity) * (tax + 1.0);
};
var price2 = @R_717_10586@lPrice2(1,1);
console.log ("Price Example 2 is : " + price2);

你可以在这里看到他们:

https://jsfiddle.net/jo9yzoke/1/

大佬总结

以上是大佬教程为你收集整理的关闭:等效于JavaScript中的“使用”关键字或C捕获列表或透明语言全部内容,希望文章能够帮你解决关闭:等效于JavaScript中的“使用”关键字或C捕获列表或透明语言所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。