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
};

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...