在JavaScript中,您可以将其推入一个自调用数组文本中

在JavaScript中,您可以将其推入一个自调用数组文本中,javascript,arrays,object,ecmascript-6,this,Javascript,Arrays,Object,Ecmascript 6,This,可以从内部推入数组文本吗 不,你不能那样做。在Javascript中,在解释器完全处理文本声明之前,项数组(您称之为“父数组”)不存在于本地作用域中,因此您不能在文本声明中.push() 如果希望根据代码条件动态修改它,则必须在文字声明完成后进行 您可以在文本声明中声明一个方法,该方法将修改项数组。但是,如果在静态声明的中间调用该方法,那么“代码>项目< /代码>还没有定义,因为它的定义尚未完成。该方法需要在数组文字声明完成后调用 但是,在文本声明中的自调用方案中,项将不会被定义,因此您将得到一

可以从内部推入数组文本吗

不,你不能那样做。在Javascript中,在解释器完全处理文本声明之前,
数组(您称之为“父数组”)不存在于本地作用域中,因此您不能在文本声明中
.push()

如果希望根据代码条件动态修改它,则必须在文字声明完成后进行

您可以在文本声明中声明一个方法,该方法将修改
数组。但是,如果在静态声明的中间调用该方法,那么“代码>项目< /代码>还没有定义,因为它的定义尚未完成。该方法需要在数组文字声明完成后调用

但是,在文本声明中的自调用方案中,
将不会被定义,因此您将得到一个错误

您可以有一个运行并返回某个值的自调用表达式,然后该值可以是文本声明中某个属性的值。这只是一个常规Javascript表达式,如果需要,可以通过表达式计算任何文字声明值。在ES6中,您甚至可以使用计算属性名。但是,
父数组
符号直到文字声明处理完成后才存在,因此您无法从解析文字声明期间计算的表达式中访问该父符号

另一种解释是,在上述代码中,您基本上有:

let items = x;
其中,
x
是您声明的一个大对象文本


Javascript将计算整个
x
,然后再将任何内容分配给
项。因此,在计算
x
时,您不能有条件地向
项添加内容。

您的“数组内对象”的语法无效。对象文本中的值可以是表达式,但不清楚
{tag:“label”id=“note_title”}
的含义。相关:@Felix Kling,谢谢,我想在我的问题中发布这个,因为它与我要寻找的内容类似,但我对数组文本特别感兴趣。var foo={a:5,b:6,init:function(){this.c=this.a+this.b;返回this;}}}.init();感谢您在数组文字声明的上下文中对数组范围的澄清,这是一个很大的帮助!有没有更好的方法来实现我想要实现的目标?@Arrow-我真的不太明白你想要实现什么。将某些内容动态设置到文字声明中的常用方法是,使用常规Javascript在声明后分配/插入它,该Javascript可以修改数组/对象,或者创建一个在声明后调用的方法。我能够使用自定义事件在解释器完全处理文字后触发该文字。但是,我丢失了所有未定义的“this”的引用。我想既然声明已经定义,我就可以访问它的属性了?@Arrow-我必须看看你在使用什么代码,才能知道如何帮助你解决这个问题。