【问题标题】:Named function expression [duplicate]命名函数表达式
【发布时间】:2014-05-28 00:39:40
【问题描述】:

我正在将命名函数表达式分配给对象的属性:

var foo = {};

foo.bar = function bar(){
    console.log('bar');
};
  • foo.bar() => 酒吧
  • bar() => ReferenceError: bar is not defined

为什么不能直接调用bar(),为什么没有定义?

我知道我可以像var bar = foo.bar = function(){} 这样简单地链接分配,所以我不是在寻找解决方法或其他解决方案,我只对为什么感兴趣工作。

我已经在 Chrome 控制台和 Node.JS 中进行了测试。

【问题讨论】:

标签: javascript


【解决方案1】:

命名函数表达式根本不应该以这种方式工作。函数名只在函数内部可见,外部不可见。

恰好有名字的函数实例化表达式与函数声明语句不同。这是语言中两个不同的句法(和语义)实体。

【讨论】:

    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2021-04-26
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多