微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据现代规范,JS中的提升顺序函数声明与var声明是什么?

如何解决根据现代规范,JS中的提升顺序函数声明与var声明是什么?

Stack Overflow上有此答案,以支持将JS函数声明放在变量声明之前。它基于Spec的早期版本。

链接到答案- Order of hoisting in JavaScript

链接到它所引用的规范- https://www.ecma-international.org/ecma-262/5.1/#sec-10.5

推理基于10.5秒的步骤8(c)

现在,按照现代规范,有人可以告诉我在什么地方讨论此提升顺序,还是说在变量声明之前悬挂函数声明仍然有意义?

链接到当前规范-https://www.ecma-international.org/ecma-262/11.0/index.html

解决方法

我认为关于函数dec与变量dec的提升顺序的争论不太相关。函数dec在创建阶段完全存在于内存中。仅当为与函数同名的var声明分配一个值时,该函数声明才不再有效。但是,如果只有一个与函数同名的var声明,那么它是无效的。 (这实际上是早期规格的一部分) 根据现代规范,顺序似乎无关紧要,因为 声明实际上从不向上移动。实际上是那些在执行阶段之前在内存中的对象。这就是为什么var在函数之前或函数在var声明之前不会起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。