javascript - 命名函数表达式

标签 javascript

<分区>

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

var foo = {};

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

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

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

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

最佳答案

命名函数表达式根本不应该那样工作。函数名称仅在函数内部可见,在外部不可见。

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

关于javascript - 命名函数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23894634/

相关文章:

javascript - 创建带有与电影同步的标记的 JavaScript 图表

javascript - 如何获取用户创建的输入的用户文本输入的值,jQuery

javascript - 对对象内的对象进行分页

javascript - 尝试纠正 JSLint 投诉时未定义 jQuery 值 : "Don' t make functions within a loop"

javascript - 为什么当我提交聊天应用程序的表单时,输出会乘以我提交的次数

javascript - 尝试通过ajax获取Excel文档,遇到异步问题

javascript - 如何将输入中的值复制到另一个选择器

javascript - 考虑到性能和广告显示,如何使用 React 和样式组件在 2 个响应式标题(移动和桌面)之间切换?

javascript - Reactjs:为什么轮播根本不显示?

javascript - 如何从 antd Image 中删除编辑器图标