我将命名函数表达式分配给对象的属性:
var foo = {};
foo.bar = function bar(){
console.log('bar');
};
foo.bar()
=> 巴 bar()
=> ReferenceError:bar未定义 为什么我不能直接致电bar()
,为什么不定义?
我知道我可以简单地将作业链接为var bar = foo.bar = function(){}
,因此我不会寻找解决方案或其他解决方案,我只对为何> 他们没有工作。
我已在Chrome控制台和Node.JS中测试过。
答案 0 :(得分:2)
命名函数表达式根本不应该以这种方式工作。函数名称仅在函数内 ,而不在外部。
恰好具有名称的函数实例化表达式与函数声明语句不同。这是语言中两种截然不同的句法(和语义)实体。