命名函数表达式

时间:2014-05-27 16:38:01

标签: javascript

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

var foo = {};

foo.bar = function bar(){
    console.log('bar');
};
  • foo.bar() =>
  • bar() => ReferenceError:bar未定义

为什么我不能直接致电bar(),为什么不定义?

我知道我可以简单地将作业链接为var bar = foo.bar = function(){},因此我不会寻找解决方案或其他解决方案,我只对为何

我已在Chrome控制台和Node.JS中测试过。

1 个答案:

答案 0 :(得分:2)

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

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