2013-02-10 1 views
0

내 질문은 상당히 간단해야한다고 생각합니다. 왜 Array.indexOf 메서드를 null과 함께 사용하려고하면 이러한 겉으로보기에는 이상한 결과가 나타나는 지에 대한 약간의 설명을 찾고 있습니다. . 배열의 요소가 길이 생성자의 매개 변수가 초기화 널 (null)이 기본값처럼 보이는, 그래서이상한 출력 내 as3 배열

var myArray:Array = new Array(20); 
trace(myarray.indexOf(null)); //output: -1 
trace(myarray[0] == null); //output true 

, 그런데 왜 같이 IndexOf (NULL)는 0을 반환하지 않습니다 여기 내 코드는? 배열

+0

내가 틀릴 수도 확인할 수 있지만 내가 생각하는'null'는 특히 기능, 작동하는 까다로운 일이다. 나는 선들을 바꿔 치기를 시도 할 것이다. (즉, 함수를 추적하기 전에 상태를 추적한다.) 그리고 그것이 차이가 나는지보아야한다. – puggsoy

+0

@puggsoy 출력은 명령문이 들어오는 순서에 관계없이 동일합니다 (나는 그것이 될 것이라고 희망합니다. == 연산자가 어떻게 든 indexOf 작업을 수행하기 위해 배열을 수정하면 방해받을 것입니다 : P) – Kreg

답변

3

요소

아니 NULL을 디폴트로한다. JS & AS3에 대한 일반적인 믿음입니다. 속성이 정의가없는 경우 은 정의되지 않음입니다.

게다가 indexOf 함수를 구현하는 모든 사용자는 실제로 검색을 시작하기 전에 검색 할 값이 null인지 확인합니다.

또한 당신이 찾고있는 생각 :

단 하나의 숫자 매개 변수는 Array 생성자에 전달되는 경우, 길이로 간주되며 그 값은 정수를 사용하여 정수로 변환됩니다
var myArray:Array = new Array(20); 
trace(myArray.indexOf(undefined)); //output: 0 
trace(myArray[0] == null); //output true 
+0

굉장 , 그것은 내가 찾고 있었던 정확하게 것이었다, 그렇게 많이 고마워한다! – Kreg