Javascript 什么';s对象文字定义中的范围。

Javascript 什么';s对象文字定义中的范围。,javascript,scope,Javascript,Scope,我正在学习javascript,我目前的理解是javascript用于作用域的主要方式是函数作用域,通常没有块作用域 所以我想到了这个: var obj={ foo:函数myfunc(){ 控制台日志(“123”); } }; myfunc()您的理解有三个缺陷: 自ES6以来,JavaScript确实有块作用域 对象文字不是块,它们不引入任何作用域 您的函数不是一个全局函数,因为它不是一个声明(在对象内部语法上无效),而是一个函数表达式,它只创建一个命名函数对象,然后将该对象分配给新创建对

我正在学习javascript,我目前的理解是javascript用于作用域的主要方式是函数作用域,通常没有块作用域

所以我想到了这个:

var obj={
foo:函数myfunc(){
控制台日志(“123”);
}
};

myfunc()您的理解有三个缺陷:

  • 自ES6以来,JavaScript确实有块作用域
  • 对象文字不是块,它们不引入任何作用域
  • 您的函数不是一个全局函数,因为它不是一个声明(在对象内部语法上无效),而是一个函数表达式,它只创建一个命名函数对象,然后将该对象分配给新创建对象的
    foo
    属性。有关详细信息,请参阅

您知道您可以通过
obj.foo()
访问它,对吗?您不能只执行myFunc(),而是obj.foo()。它是一个函数表达式。它在任何范围内都不可用;myfunc()
不起作用,因为表达式。@Chris Object scope?@shengy:downvote的意思是“这个问题没有显示任何研究成果;它不清楚或没有用处”。