>웹 프론트엔드 >JS 튜토리얼 >JavaScript는 구문 검사를 위해 eval 또는 new 함수를 사용합니다_javascript 팁

JavaScript는 구문 검사를 위해 eval 또는 new 함수를 사용합니다_javascript 팁

WBOY
WBOY원래의
2016-05-16 18:18:271176검색

구문 검사를 위해 new Function()을 사용하세요
eval() 메서드를 무분별하게 사용할 수 없습니다. 부적절한 시기에 eval() 메서드를 사용하면 전체 프로그램에 문제가 발생할 수 있습니다.
New Function()은 그다지 큰 문제가 되지 않습니다. 문제. new Function()으로 생성된 함수는 어떠한 경우에도 전역 범위에서 직접 작동하지만 구문 검사만 수행하는 경우 직접 호출하지 않는 한 범위 문제로 인해 예기치 않은 결과가 발생하지 않습니다. .

eval()에서 허용하는 매개변수 앞에 "0"을 추가합니다.
사실 이는 IE의 버그 때문입니다. 어떤 이유로 IE에서 eval()을 호출하여 동적으로 함수를 생성하려는 경우.
예:
eval('(function(){ /* code here */ })')
IE의 반환은 정의되지 않지만 다른 브라우저에서는 이를 올바르게 반환합니다. 새로 구축된 기능.
가장 간단하고 효과적인 해결책은 모든 주요 브라우저에서 호환될 수 있도록 앞에 "0"을 추가하는 것입니다.
예:
eval('0,function(){ /* code here */ }')
참고: IE9의 Chakra 엔진에서는 이 문제가 해결되었습니다.

배열 개체의 concat 메서드를 사용하여 새 배열을 생성합니다.
단일 개체 매개변수를 처리할 요소가 하나만 포함된 배열로 변환하려면 "[ ].concat( 영형)".
예:

코드 복사 코드는 다음과 같습니다.

var arr1 = [1,2 ];
var arr2 = [3,4];
var arr3 = arr1.concat(arr2);
alert(arr3.length)

또 다른 방법은 다음과 같습니다. if (!(o instanceof Array)) o = [o]
// ECMAScript 5의 isArray와 비교하면 충분히 엄격하지 않습니다.

네티즌 답변:
1.eval은 실제로 임의로 사용할 수 없습니다.
2. IE에서 eval을 사용할 때 내 해결책은 실행 함수 본문에 반환하는 것입니다. .prototype.concat.apply([1,2,3],[4,5,6]);
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.