Я хочу; для возврата [1,2,3] вместо [2,3], но если я использую freeze, я просто получаю "TypeError: 0 доступен только для чтения":
var a=[];
function x(){
var b=[1,2,3];
a=b;
//Object.freeze(a);
var b2 = b.splice(0,1);
}
x();
a;
Есть идеи?
Сделайте копию массива вместо сохранения ссылки в массиве, иначе freeze
повлияет на оба массива, поскольку оба они одинаковы.
// copy the array using slice method
a = b.slice();
Забавно, как жизнь проходит по кругу, но, читая о распространенном операторе es6, я узнал способ ответить на мой собственный вопрос (опубликованный неделю или около того), не используя срез (как предложено из превосходного принятого ответа):
var arr = [1,2,3];
var new_arr = [...arr]; // like arr.slice()