>  기사  >  웹 프론트엔드  >  try-catch를 사용하여 변수가 선언되었는지, 선언되지 않았는지 또는 할당되지 않은_javascript 기술인지 확인합니다.

try-catch를 사용하여 변수가 선언되었는지, 선언되지 않았는지 또는 할당되지 않은_javascript 기술인지 확인합니다.

WBOY
WBOY원래의
2016-05-16 16:55:391121검색

변수를 선언했지만 할당하지 않은 경우 직접 값을 할당할 수 있으며 변수의 범위를 변경할 수 없습니다.

선언하지 않은 경우 다시 선언하세요
인터넷에서 검색해보니 일반적인 방법은 if(typeof(a)=='undefine'){var a='ss';},

그런데 이 방법은 선언되지 않은 경우 true를 반환합니다. 또는 할당되지 않은 변수를 선언했습니다. 그렇다면:

코드를 복사하세요. 코드는 다음과 같습니다:
var a; 🎜>함수 f(){
if(typeof(a)=='정의되지 않음')
{var a=1;}
}
f()
console.log( a);


은 f()가 동일한 이름을 가진 지역 변수만 선언하므로 정의되지 않음으로 표시됩니다.

그러나 선언되지 않은 변수인 경우: (noValueV==null)인 경우 true를 반환합니다.

선언되지 않은 변수인 경우(noDeclareV==null)인 경우 오류가 보고됩니다. .

다음과 같이 작동합니다.


function f ( ){
if(typeof(v)=='undefine'){
try{
if(v==null)//v가 선언되었지만 할당되지 않았음을 나타냅니다.
v=1; //v가 전역 변수인 경우 범위는 변경되지 않습니다.
}
catch(err){//v가 선언되지 않았음을 나타냅니다.
var v;v=2 ;
}
}
console.log(v);
}
f( )


이 역시 잘못된 것입니다. '미리 선언', 즉 함수 함수 내에서 선언된 변수는 함수 내에서 선언된 위치에 관계없이 이 함수와 이 함수의 하위 함수에서 볼 수 있습니다.

위의 var v로 인해 상황에 관계없이 try만 사용됩니다.

수정:


function f( ){
if(typeof(v)=='undefine'){
try{
if(v==null)//v가 선언되었지만 할당되지 않았음을 나타냅니다.
v=1; / /v가 전역 변수인 경우 범위는 변경되지 않습니다
}
catch(err){//v가 선언되지 않았음을 나타냅니다
eval('var v');v =2; / /여기서는 다릅니다
}
}
console.log(v)
}
f( );

은 판단 함수로 작성되었으며, 'noDeclare'를 반환하면 변수가 선언되지 않았음을 의미하고, 'noValue'는 변수가 선언되었지만 값이 할당되지 않았음을 의미하며, 'hasValue'는 변수가 선언되었음을 의미합니다. 선언되고 값이 할당되었습니다:



코드 복사
코드는 다음과 같습니다: function f (v){ if(typeof(v)=='undefine'){ 시도{
if(v==null)
'noValue' 반환
}
catch(err){
return 'noDeclare';
}
else return 'hasValue';}
var a
console.log(f(a) ));
console.log(f(a) ));
console.log(f(b))


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