在PHP中,我们有一个简洁的use
关键字,允许在使用闭包时使用"外部"变量,如下所示:
$tax = 10; $totalPrice = function ($quantity, $price) use ($tax){ //mandatory 'use' return ($price * $quantity) * ($tax + 1.0); };
如果我们省略该use ($tax)
部分,它将抛出一个错误,我非常喜欢.
类似地,在C++ 11中,我们也这样做,使用括号指定称为捕获列表的外部变量:
float tax = 10; auto totalPrice = [tax](int quantity, float price){ //mandatory [] return (price*quantity) * (tax + 1.0); };
与在php中一样,如果省略捕获列表,则会抛出错误.
在Javascript中,我们没有等效于此use
关键字(或c ++ []),我们只是这样做:
var tax = 10; var totalPrice = 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的语言,这个辩论是另一个话题.
编辑:执行此检查的linter也会有所帮助