>  기사  >  웹 프론트엔드  >  JavaScript 코드 해석 var ie = !-[1,]

JavaScript 코드 해석 var ie = !-[1,]

高洛峰
高洛峰원래의
2016-11-25 11:00:371142검색

var ie = !-[1,];

이 코드는 IE9 이전에는 세계에서 가장 짧은 IE 판단 코드라고 불렸습니다. 코드는 짧지만 기본적인 JavaScript 지식이 많이 포함되어 있습니다. 이 예제에서는 코드가 실행되면 배열의 toString() 메서드가 먼저 호출됩니다. [1,].toString()이 실행되면 IE6, 7, 8에서는 "1,"이 얻어집니다. 그러면 표현식은 !-"1,"이 됩니다. 그런 다음 "1"을 숫자 유형으로 변환하여 NaN을 얻은 다음 음수 NaN을 변환하여 여전히 NaN 값을 얻습니다. 마지막으로 !NaN을 실행하고 true를 반환합니다. 다음 명령문을 분해하여 코드에 포함된 javascript 지식을 검토해 보겠습니다.

브라우저 배열 리터럴 구문 분석의 차이점


[1,]은 javascript 배열 리터럴의 사용을 나타냅니다. 수량은 배열을 정의합니다. . IE6, 7, 8에서는 배열에 두 개의 요소가 있으며 배열의 값은 각각 1과 정의되지 않습니다. 표준 브라우저에서는 첫 번째 요소가 무시되고 배열에 하나의 요소인 1만 포함된 후에는 정의되지 않습니다.

배열의 toString() 메서드


배열 개체의 toString() 메서드를 호출하면 배열의 각 요소에 대해 toString() 메서드가 호출됩니다. 요소의 값이 NULL이거나 정의되지 않은 경우 빈 문자열이 반환되고, 각 항목에서 얻은 값은 쉼표 ","로 구분된 문자열로 조합됩니다.

단항 빼기 연산자

단항 빼기 연산자를 사용할 때 피연산자가 숫자 유형이면 피연산자가 직접 음수화됩니다. 그렇지 않으면 피연산자를 숫자 유형으로 변환하려고 합니다. 먼저 변환 프로세스는 Number 함수를 실행한 다음 결과를 음수로 만드는 것과 동일합니다.

논리적 NOT 연산

논리적 NOT 연산 수행 시 피연산자가 NaN, NULL 또는 정의되지 않은 경우 true를 반환합니다.

위의 지식을 통해 var ie = !-[1,]; 코드는 실제로 var ie = !(-Number([1,].toString())); IE678에서는 값이 true입니다.


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