为了账号安全,请及时绑定邮箱和手机立即绑定

为什么上面这行代码和下面这行代码几个差这么大?

document.write(myarr1+"
"+myarr1.reverse()+"
"+ myarr1.join("")) 为什么上面这行代码和下面这行代码几个差这么大? document.write(myarr1+myarr1.reverse()+"
"+ myarr1.join(""))

正在回答

5 回答

当你用reverse(),原数组已经发生改变,后面的都是按照改变后的数组执行

0 回复 有任何疑惑可以回复我~

注意:reverse()会改变原来的数组,而不会创建新的数组。

0 回复 有任何疑惑可以回复我~

这可能和 document 的输出机制有关。

第一行代码中,myarr1 后面紧跟空字符串 "",所以系统已经将 myarr1 的元素提出,与 "" 合并成为一个新字符串,并继续往后面的表达式执行。

而在第二行代码中,myarr1 后面跟的是 myarr1.reverse() 这个函数,并没有将 myarr1 的元素现提出,而是先执行了 reverse() 函数,然后再后面是空字符串 "",这时候系统提出前面两个 myarr1 的元素,与 "" 拼接,而这时 myarr1 的顺序已经改变。

以上仅是个人推论,如有不对的地方,望指出讨论,互相进步。

0 回复 有任何疑惑可以回复我~

myarr1+""+myarr1.reverse() 按顺序输出

myarr1+myarr1.reverse() 字符串计算,myarr1.reverse()优先级比加号高,所以先执行,上面的代码不涉及优先级

0 回复 有任何疑惑可以回复我~

不需要钻牛角尖,用<br />。其他没毛病

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么上面这行代码和下面这行代码几个差这么大?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信