爪儿网
2016-08-30 17:39
document.write(myarr1+"
"+myarr1.reverse()+"
"+ myarr1.join(""))
为什么上面这行代码和下面这行代码几个差这么大?
document.write(myarr1+myarr1.reverse()+"
"+ myarr1.join(""))
当你用reverse(),原数组已经发生改变,后面的都是按照改变后的数组执行
注意:reverse()会改变原来的数组,而不会创建新的数组。
这可能和 document 的输出机制有关。
第一行代码中,myarr1 后面紧跟空字符串 "",所以系统已经将 myarr1 的元素提出,与 "" 合并成为一个新字符串,并继续往后面的表达式执行。
而在第二行代码中,myarr1 后面跟的是 myarr1.reverse() 这个函数,并没有将 myarr1 的元素现提出,而是先执行了 reverse() 函数,然后再后面是空字符串 "",这时候系统提出前面两个 myarr1 的元素,与 "" 拼接,而这时 myarr1 的顺序已经改变。
以上仅是个人推论,如有不对的地方,望指出讨论,互相进步。
myarr1+""+myarr1.reverse() 按顺序输出
myarr1+myarr1.reverse() 字符串计算,myarr1.reverse()优先级比加号高,所以先执行,上面的代码不涉及优先级
不需要钻牛角尖,用<br />。其他没毛病
JavaScript进阶篇
468196 学习 · 21891 问题
相似问题