JS의 작업 할당에 대한 작은 문제

4050 단어

     
     
     
     
uniqueInteger.counter = 0 ; // “ ”
function uniqueInteger(){
return uniqueInteger.counter ++ ;
}

var out; // (1)
for (i = 0 ;i < 3 ;i ++ ){
out
+= uniqueInteger();
}

out=?,함수를 호출하여 되돌아오는 값이 자동으로 수치 형식으로 바뀌고 out에 값을 부여하기 때문에 첫 번째 반응은 3이라고 생각할 수도 있습니다.근데 이상해.실행 결과가 NaN이기 때문입니다.
작업 연산자 포함
++(잠시 여기로 돌려보내기), +=, -=와 같은 것이 바로 조작 연산자를 가지고 있는 것이다. +=동작 수는 수치형과 문자열일 수 있지만 다른 것은 일반적으로 수치형이다.
만약 out + = some_num;out = out + some_num; 이를 통해 알 수 있듯이 문제는 i=0일 때 아웃은 초기화되지 않고 undefined로 정의되어 있다는 것이다.
한편, undefined는 수치 환경에서false처럼 0으로 전환할 수 없고, 반대로 NaN으로 전환되며, 수치를 추가할 때 NaN으로 전환된다.그래서 alert의 결과는 NaN입니다.
PS:undefined는 문자열 환경에서 "undefined"로 바뀔 수 있기 때문에
 “
out
 
+=
 uniqueInteger();” 로 변경
out += ' '+uniqueInteger();"그럼
alert(out)의 결과는'undefined012'입니다.
수정된 코드는 다음과 같습니다.

     
     
     
     
uniqueInteger.counter = 0 ; // “ ”
function uniqueInteger(){
return uniqueInteger.counter ++ ;
}
var out;
for (i = 0 ;i < 3 ;i ++ ){
out
+= ' ' + uniqueInteger(); // ' ',
}
alert(out)

좋은 웹페이지 즐겨찾기