Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

箭式函数与 arguments

  之前的规范中 ArrowFunction 内的this被解析为了外层作用域的,而且也仅有this被这么解析。所以当时我把它理解为了this是关键字,所以这么解析的逻辑。但是现在最新版的规范不仅将this收入,还把arguments也一起收入。虽然不知道这么做对不对,还是思考下。

可能存在的问题

  如果现在这么做,是不是以后所有函数作用域中的内置环境记录项都要被这么处理呢?我记得 ES6 里还有super的概念吧(不过这个貌似不会受影响),这类东西是不是都应该这么处理呢?arguments这东西可不仅仅是参数列表而已,还有callee在上面,这么做的话要怎么取这个东西?把箭式函数先放一个变量里?不过规范确实很不愿意我们去取callee,也许它是故意的。。

我的想法

  也许上面一段看起来感觉我很不喜欢这东西,像在黑 ES6。其实我本人更愿意接受arguments被解析为外部作用域的处理。上面只是把我担心的一些问题提出来了而已。自从接受了它对this这么做之后我就在纠结,为什么不对arguments也这么做啊!当时还使用了「this 是关键字,arguments 是变量」的说法来牵强地解释原来的逻辑。看来现在已经不需要了。

现实

  虽然规范已经将arguments也收入,但目前 Firefox 的实现暂时还没跟上。其实这也不是什么急用的东西,这个概念目前还很受争论,甚至都不知道规范能不能稳定。。

网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^