我写的代码如下,
function Myfunction(){ Myfunction.myvar = "somevar"; }
执行功能后,我可以访问Myfunction.myvar
怎么工作?如果我这样做,这个隐藏的问题是什么?
如果有任何问题,请说明上下文.
解决方法
How is it working?
当在某些执行上下文中声明一个函数时,绑定将添加到该上下文的变量环境中.当引用标识符时,将检查当前变量环境,以查看该标识符是否存在绑定.
如果没有绑定,则检查外部变量环境,依此类推,备份到全局范围.
所以:
// OUTER ScopE // Binding exists for 'example' function example() { // INNER ScopE // No binding for 'example' // References 'example' in outer scope example.x = 1; }
What is the problem hidden in this?
没有(一般来说,虽然这是否适合您的解决方案取决于您要做什么).
您正在有效地创建该函数的“静态”属性.由于JavaScript函数是一流的,您可以像其他任何对象一样设置属性.
请注意,如果您有一个命名函数表达式,而不是一个函数声明,行为是不同的:
var x = function example () { // Identifier 'example' is only in scope in here };
原文地址:https://www.jb51.cc/js/151261.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。