0
지금 당장 즉 호환성 및 내 웹 사이트를 테스트하고있어

내가 문제의 과다로 실행 : 나는 함께 대부분 걱정이 시점에서예상 됨 ';' 즉 예외 (자바 스크립트, jQuery를)

DOM7011: The code on this page disabled back and forward caching. For more information, see: http://go.microsoft.com/fwlink/?LinkID=291337 
webshop.html 
HTML1300: Navigation occurred. 
webshop.html 
SCRIPT1004: Expected ';' 
main.js (16,18) 

; 내 코드를 확인할 때마다 거기에 있기 때문에 예상되지 않습니다. 당신은 당신의 코드를 transpile (예 : with Babel) 또는 사용할 수 있습니다

enter image description here

+0

IE는 'for ... of'을 지원하지 않습니다. – MaxArt

+0

그 다음 대안은 무엇입니까? – Vocaloidas

+0

그에 대한 답을 추가하겠습니다. – MaxArt

답변

1

IE doesn't support for..of, 그래서 좋은 오래된 forEach :

this.cartShop.forEach(function(item) { 
    if (...) { ... } 
}, this); 

업데이트 : 나는 if 안에 지금보고 있어요 블록에 return 문이있어서 함수를 조기에 중단 할 수 있습니다. 그래서 내가 제안한 코드가 다르게 동작합니다. 예기치 않은 동작과 코드 중복을 초래하기 때문에 이러한 접근 방식을 권장하지 않습니다. 일반적으로 break을 사용하여 루프에서 벗어나십시오.

나는 항목이 카트에있는 경우 먼저 확인하는 참조 : 당신이 find를 사용하여 수행 할 수 있습니다

var item = this.cartShop.find(function(item) { 
    return item.name === name && ... 
}); 

if (item) { 
    item.quantity += quantity; 
} else { 
    item = new this.Item(...); 
    this.cartShop.push(item); 
} 

this.saveLocalCart(); 

불행하게도, find 다시 for..of 당신이 할 수있는에 IE에서 사용할 수 있지만 반하지입니다 polyfill을 제공하면됩니다. 또는, 당신은 항상 고전 for 루프 기존 코드를 사용할 수 있습니다

for (var i = 0; i < this.cartShop.length; i++) { 
    var item = this.cartShop[i]; 
    if (...) { ... } 
} 

는, 더 자세한 덜 읽을 수있는,하지만 여전히 효과적.

+0

좋아, 어쩌면 주제 밖의 질문 : 왜 모든 사람들이 이런 유형의 배열을 반복적으로 사용할 것인가? 이것에 관한 한가지 언급은 I.E. – Vocaloidas

+1

@Vocaloidas 새 기사는 새 ES6 구문에 의지하고 있으므로 IE와 같은 브라우저는 버려지기 때문에 버려지는 경향이 있습니다. 현재의 일반적인 접근 방식은 새로운 구문을 사용하고, 그것을 변형 시키거나 현대적인 환경을 사용하는 것입니다. – MaxArt

+0

젠장,이 함수는 내 addItem 함수를 해독합니다. 어떻게 든 이름, 색상 및 재료가 일치하면 항목의 수량을 증가시킬뿐만 아니라 장바구니에 새 항목을 추가합니다. 범인을 결정하도록 도와 주시겠습니까? 함수 매개 변수에 전달 된 변수 (이름, 색, 재료)가 .item 변수와 같은지 확인했습니다. – Vocaloidas