Javascript 命名函数表达式
我正在将命名函数表达式指定给对象的属性:Javascript 命名函数表达式,javascript,Javascript,我正在将命名函数表达式指定给对象的属性: var foo = {}; foo.bar = function bar(){ console.log('bar'); }; foo.bar()=>bar bar() 为什么我不能直接调用bar(),为什么没有定义它? 我知道我可以像var bar=foo.bar=function() 我已经在Chrome控制台和Node.JS中进行了测试。命名函数表达式不应该以这种方式工作。函数名仅在函数内部可见,在函数外部不可见 恰好有名称的函数实例
var foo = {};
foo.bar = function bar(){
console.log('bar');
};
=>barfoo.bar()
bar()
bar()
,为什么没有定义它?
我知道我可以像var bar=foo.bar=function()
我已经在Chrome控制台和Node.JS中进行了测试。命名函数表达式不应该以这种方式工作。函数名仅在函数内部可见,在函数外部不可见
恰好有名称的函数实例化表达式与函数声明语句不同。这是语言中两个不同的语法(和语义)实体。bar()
实际上意味着window.bar()
,它没有在window
名称空间中定义。相反,它是在foo
命名空间中定义的。另请参见