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

来源:7-20 颠倒数组元素顺序reverse()

爪儿网

2016-08-30 17:39

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

写回答 关注

5回答

  • qq_灰色头像_17
    2017-08-30 11:27:47

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

  • qq_灰色头像_17
    2017-08-30 11:26:22

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

  • 慕粉3951534
    2016-10-11 11:44:30

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

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

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

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

  • 木子_123
    2016-08-31 10:18:56

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

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

  • __zz
    2016-08-30 18:22:42

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

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468064 学习 · 21891 问题

查看课程

相似问题