所谓破坏性,就是指一个操作会对操作对象本身做修改。
而"非破坏性"的就是不会对操作对象本身做修改,而是返回一个新的对象。如果使用过函数式编程语言你会知道,他们所有的操作都会是非破坏性的。
JS的数据类型分为两类:引用类型(reference data types)和值类型(value data types)。破坏性的概念只适用于引用类型。
JS 中,数组含有很多破坏性的方法。以下都是破坏性方法:
pop, push, reverse, shift, sort, splice, unshift 。
非破坏性的方法(直接改造成一个新的数组):
concat,slice变成新数组,其原来的数组还是存在的,join()把字符串变成了一个新的数组。