JS数组文字中缺少逗号-为什么要编译堆栈溢出 最近30次来自stackoverflow.com 2024-06-28T13:50:52Z https://stackoverflow.com/feeds/question/77114154 https://creativecommons.org/licenses/by-sa/4.0/rdf https://stackoverflow.com/q/77114154 7 JS数组文字中缺少逗号-为什么要编译? 科尔比·金 https://stackoverflow.com/users/22570649 2023-09-15T16:55:41Z 2020年3月9日至15日17时04分06秒 <p>我忘了在javascript中用逗号初始化2D数组,让我惊讶的是,它编译好了。例如:</p><p><div class=“snippet”data-lang=“js”data-hide=“false”data-console=“true”data-babel=“false”><div class=“snippet-code”><pre class=“snippet-code-js lang-js prettyprint-override”>amIMissingSomething=[[1, 2, 3][4, 5, 6],[7, 8, 9]]console.log(amIMissingSomething)//[未定义,[7,8,9]]</code></pre></div></div></p><p>我预料会发生语法错误。然而,经过一段时间后,我了解到这是有效的javascript,计算结果为:<code>[undefined,[7,8,9]]</code>。这里发生了什么</p>(第页) https://stackoverflow.com/questions/77114154/-/77114171#77114171 7 Zachiah回答JS数组文字中缺少逗号-为什么要编译? 扎奇亚 https://stackoverflow.com/users/10892722 2023-09-15T16:59:58Z 2023-09-15T16:59:58Z <p>它被解析为:</p><pre class=“lang-js prettyprint-override”>amIMissingSomething=[[1,2,3][4,5,6],[7,8,9]]</code></pre><p>逗号运算符基本上返回最后一个表达式:</p><pre class=“lang-js prettyprint-override”>amIMissingSomething=[[1,2,3][6],[7,8,9]]</code></pre><p>由于第一个数组没有7个元素,因此它的计算结果为<code>未定义</code></p> https://stackoverflow.com/questions/77114154/-/77114200#77114200 5 Konrad回答JS数组文字中缺少逗号-为什么要编译? 康拉德 https://stackoverflow.com/users/5089567 2023-09-15T17:04:06Z 2023-09-15T17:04:06Z <p>它被解释为数组[索引]</p><p>请参见<a href=“https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors“rel=”noreferrer“>属性访问器</a></p><p><div class=“snippet”data-lang=“js”data-hide=“false”data-console=“true”data-babel=“false”><div class=“snippet-code”><pre class=“snippet-code-js lang-js prettyprint-override”><code>const a=[1,2,3][0]console.log(a)</code></pre></div></div></p><p>expression的结果是6,参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_operator网站“rel=”noreferrer“>逗号运算符</a></p><p><div class=“snippet”data-lang=“js”data-hide=“false”data-console=“true”data-babel=“false”><div class=“snippet-code”><pre class=“snippet-code-js lang-js prettyprint-override”>const arrayChangeHandler={get:函数(目标,属性){console.log('getting'+property+'for'+target);返回目标[属性];},};const originalArray=[1,2,3];const proxyToArray=新代理(originalArray,arrayChangeHandler);proxyToArray[4,5,6]</code></pre></div></div></p>