2017-12-15 1 views
0

저는 Javascript ECMA6을 배우고 있지만, 문제가 있습니다. 내 책과 크롬과 사파리의 결과가 동일하지 않은 경우 문제가 있습니다. 제 질문은 이것이 향후 개발에 영향을 미칠지 여부입니다. .브라우저의 차이점은 자바 스크립트

var pizzas = ["Margherita", "Mushroom", "Spinach & Rocket", "Pineapple & Sweetcorn"]; 
delete pizzas[2] 

**Safari** 
pizzas; //["Margherita", "Mushroom", 3: "Pineapple & Sweetcorn"] 

**Chrome** 
pizzas; //(4) ["Margherita", "Mushroom", empty, "Pineapple & Sweetcorn"] 0 : "Margherita" 1 : "Mushroom" 3 : "Pineapple & Sweetcorn" 
length : 4 
크롬에서

버전 자바 스크립트 : 6.3.292.46

크롬에서 내가 크롬과 사파리에서이 위치에 빈 값을 참조하십시오이 '3'detele 할 다음 값이 개발에 매우 ​​중요 보여 자바 스크립트?

파이어 폭스에서는 같은 결과 (다른 결과)라고 생각합니다.

감사는

답변

2

delete는 배열에 사용할 수 없습니다. 배열 길이를 변경하거나 배열의 색인을 다시 지정하지 않습니다.

대신 Array#splice()

pizzas.splice(2,1) 

1 개 요소는 인덱스 = 2에서 시작 제거하고 하나에 의해 배열의 길이를 줄일 수 사용

참조 : Deleting array elements in JavaScript - delete vs splice

+0

딱! 그러나 삭제를 사용하는 진정한 목적은 무엇입니까 (저자가 배열에서 값을 제거하는 데 사용하는 제 책에서) –

+0

그것은 무서운 책처럼 들립니다. 또는 아마도 매우 오래된 것일 수도 있습니다. 또는 컨텍스트 밖으로 가져 왔으며 배열의 개체 속성을 삭제하고 있습니다 – charlietfl

+0

이 책은 Ninja Javascript의 초심자입니다. 가장 많이 업데이트 된 책이 있습니까? –

관련 문제