Web 技术研究所

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

纠结的函数 length 属性与 Array.from

  规范中定义了函数的length属性用于描述函数的参数个数,实际上这个length属性是个非常纠结的东西。另外Array.from是ES6中才引入的方法,这个方法会对目标对象以数组迭代器的形式把数据遍历出来,这自然就把带length属性的函数对象也给结果了。
  函数的length属性和数组没有任何关系。或者函数本身就完全不是拟数组的概念。但函数确实会被数组迭代器遍历:
Array.from((a,b,c,d,e)=>0);
  它根据函数提供的length属性,从0开始遍历下标元素,并得到一坨undefined。请问意义何在,谁稀罕你这一坨undefined啊?其实这也不能全怪Array.from方法和数组迭代器!除了函数之外好像就没有什么东西在滥用length属性了吧(至少我暂时没想到),而函数本身的length属性到底有什么用?这的确是个纠结的问题!然后看看ES6中可选参数函数的相关实现,我了个去,简直了!
  以下测试代码来自 @紫云妃

  函数的length这东西越搞越纠结吧?那么它的实现到底图啥啊!反正我从来不依仗这个不可靠的length属性来做任何判断。目前的ES6中已经将函数的length属性的[[Configurable]]置为true,但目前仍然没有任何稳定版的浏览器实现该特性。总之希望有朝一日规范可以将这些历史遗留的东西移除或重整吧。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^