구문 검사를 위해 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( 영형)".
예: