JS의 작업 할당에 대한 작은 문제
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)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.