【每日一题】- 2019-12-25 - 以下两段代码有什么不同?
Closed this issue · 3 comments
azl397985856 commented
- 代码片段1
list.slice().sort(sortFunc)
- 代码片段2
list.sort(sortFunc)
yunlovebo commented
- 排序的是list的副本,list本身不变
- 排序的是list本身
MayRain1999 commented
slice
不会修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。原数组的元素会按照下述规则拷贝:
- 如果该元素是个对象引用 (不是实际的对象),slice 会拷贝这个对象引用到新的数组里。两个对象引用都引用了同一个对象。如果被引用的对象发生改变,则新的和原来的数组中的这个元素也会发生改变。
- 对于字符串、数字及布尔值来说(不是
String
、Number
或者Boolean
对象),slice 会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另一个数组。 - 如果向两个数组任一中添加了新元素,则另一个不会受到影响
azl397985856 commented
slice
不会修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。原数组的元素会按照下述规则拷贝:
- 如果该元素是个对象引用 (不是实际的对象),slice 会拷贝这个对象引用到新的数组里。两个对象引用都引用了同一个对象。如果被引用的对象发生改变,则新的和原来的数组中的这个元素也会发生改变。
- 对于字符串、数字及布尔值来说(不是
String
、Number
或者Boolean
对象),slice 会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另一个数组。- 如果向两个数组任一中添加了新元素,则另一个不会受到影响
非常详细。 简单来说就是slice是浅拷贝