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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/js/151261.html

猜你在找的JavaScript相关文章