JavaScript中是否有PHP "use"等价写法?如何在函数内访问外部变量?
JavaScript访问外部变量与PHP
use语句的等价实现解答 1. JavaScript中访问外部变量的特性
JavaScript天生支持闭包机制,内部函数(包括匿名函数、箭头函数)默认就能访问外层作用域的变量,不需要像PHP那样通过use语句显式声明要捕获的外部变量。
简单来说,只要内部函数定义在某个作用域内,它就自动拥有对该作用域及上层作用域变量的访问权——这就是词法作用域的特性,和PHP匿名函数需要手动use变量的逻辑完全不同。
比如你给出的PHP代码:
function ($quantity) use ($tax, &$total) { .. };
在JavaScript里,等价写法不需要额外声明,直接写:
const myFunc = (quantity) => { // 直接使用外层作用域的tax和total变量 console.log(tax, total); };
2. 你的代码为什么能正常运行
你提供的JavaScript代码:
function removePosition(menu) { msgManager.confirm('Delete ?').then(() => { menu.closest('.clockingPositionContainer').remove(); }); }
这段代码里的箭头函数() => { ... }作为then的回调,属于removePosition函数的内部函数,它会自动继承外层removePosition的词法作用域,所以可以直接访问menu变量,完全不需要额外的语法处理,逻辑上是可以正常执行删除操作的。
内容的提问来源于stack exchange,提问作者Randy Arnold
相关产品推荐
相关产品推荐

