>  기사  >  웹 프론트엔드  >  JavaScript 호환성 및 디버깅 기술

JavaScript 호환성 및 디버깅 기술

高洛峰
高洛峰원래의
2016-12-06 09:42:401193검색

JavaScript 호환성과 관련하여 가장 게으른 방법은 jQuery의 도구 기능을 사용하는 것입니다. 많은 브라우저가 함수를 찾을 수 없음 오류를 보고하므로 ECMAScript와 같은 기능을 사용하지 마십시오. 아래에는 개발 과정에서 발생하는 몇 가지 JavaScript 문제가 나열되어 있습니다.

1. 매개변수 목록에 쉼표가 여러 개 있습니다.

$.ajax({}) 메소드는 매우 익숙하지만 IE에서는 매개변수 목록을 이어붙일 때 마지막에 쉼표를 추가하면 주의할 점이 있습니다. 의심할 바 없이 모든 JS는 IE에서 유효하지 않습니다.

디버깅 중에 다음 오류가 보고됩니다.

식별자, 문자열 또는 숫자가 누락되었습니다.

data: {
 S_Id: Subject_Id,
 level: $("#addKey").attr("lang"),  --如果写上这个逗号,IE会报错,火狐谷歌正常。
},

2. str ; var str=""

<script>
var Str1;
for (var i = 0; i < 3; i++)
{
  Str1 += "xxx"
}
alert(Str1);
var Str2 = "";
for (var i = 0; i < 3; i++)
{
Str2 += "xxx"
}
alert(Str2);
</script>

의 차이점은 다음과 같습니다.

처음:

JavaScript 호환성 및 디버깅 기술

두 번째:

JavaScript 호환성 및 디버깅 기술

변수를 정의할 때 값을 지정하지 않으면 변수가 정의되지 않습니다. 문자열 추가는 정의되지 않음 + "추가할 문자열"입니다. 이와 같이 HTML 요소에 값을 할당하면 Undefound도 표시됩니다. 주의 깊게 살펴보세요.

3. IE 캐시 JS 디버깅

오늘 디버깅을 해보니 IE8의 JS 캐시가 매우 강력하다는 것을 알았습니다. 캐시 새로 고침 및 지우기는 효과가 없습니다. 마우스 왼쪽 버튼이 거의 부러질 때까지 새로 고침을 수행하지만 여전히 새로 고침되지 않습니다.

이제 JS를 소개할 때 마지막에 새로운 Date()를 추가하는 특별한 트릭에 대해 이야기하겠습니다. 이렇게 하면 너무 열심히 새로 고칠 필요가 없습니다.

4. JS는 함수/ 변수가 존재하면

을 호출합니다. JavaScript에서는 if의 조건으로 null, undefine, 0, "", false를 사용하면 false로 간주합니다.

따라서 변수의 경우 var str = ""라고 판단하면 여전히 false를 반환합니다.

//是否存在指定函数
 function isExitsFunction(funcName) {
 try {
 if (typeof(eval(funcName)) == "function") {
 return true;
 }
 } catch(e) {}
 return false;
 }
 //是否存在指定变量
 function isExitsVariable(variableName) {
 try {
 if (typeof(variableName) == "undefined") {
 //alert("value is undefined");
 return false;
 } else {
 //alert("value is true");
 return true;
 }
 } catch(e) {}
 return false;
 }



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.