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

javascript – 我可以在同一个函数内使用函数作为对象

我写的代码如下,
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 举报,一经查实,本站将立刻删除。

相关推荐