목적은 변수가 할당되지 않은 것으로 선언되면 직접 할당 할 수 있으며 변수의 범위는 변경 될 수 없습니다.
선언되지 않으면 다시 고정하십시오.
온라인으로 검색 한 후 일반적인 메소드는 if (typeof (a) == 'undefined') {var a = 'ss';},
그러나이 메소드는 선언되지 않은 또는 할당되지 않은 변수에 대해 true를 반환합니다. 그렇다면 :
코드 사본은 다음과 같습니다.
var a;
함수 f () {
if (typeof (a) == 'undefined')
{var a = 1;}
}
에프();
Console.log (a);
f ()가 동일한 이름의 로컬 변수를 선언하기 때문에 정의되지 않은 것이 표시됩니다.
그러나 할당되지 않은 것으로 선언 된 변수 인 경우 : if (novaluev == null), true를 반환합니다.
선언되지 않은 변수 : if (nodeclarev == null), 오류 가보고됩니다.
그래서 그것은 다음과 같습니다.
코드 사본은 다음과 같습니다.
함수 f () {
if (typeof (v) == 'undefined') {
노력하다{
if (v == null) // v가 할당되지 않은 것으로 선언되었음을 나타냅니다
v = 1;
}
catch (err) {// v가 선언되지 않았 음을 나타냅니다
var v; v = 2;
}
}
Console.log (V);
}
f ();
JS는 '전진 선언'의 특성, 즉 함수에서 선언 된 변수가 함수에서 선언 된 위치에 관계 없이이 함수의 하위 기능에서 볼 수 있기 때문에 잘못된 것입니다.
따라서 위의 var v;로 인해 어쨌든 시도해보십시오.
수정 :
코드 사본은 다음과 같습니다.
함수 f () {
if (typeof (v) == 'undefined') {
노력하다{
if (v == null) // v가 할당되지 않은 것으로 선언되었음을 나타냅니다
v = 1;
}
catch (err) {// v가 선언되지 않았 음을 나타냅니다
평가 ( 'var v'); v = 2;
}
}
Console.log (V);
}
f ();
그게 다야.
판단 함수로 작성된 'Nodeclare'를 반환하면 변수가 선언되지 않았 음을 의미하며 'Novalue'는 변수가 할당되지 않은 것으로 선언되었음을 의미하며 'HasValue'는 변수가 할당되었음을 의미합니다.
코드 사본은 다음과 같습니다.
기능 f (v) {
if (typeof (v) == 'undefined') {
노력하다{
if (v == null)
'Novalue'를 반환합니다.
}
캐치 (err) {
반환 'nodeclare';
}
}
그렇지 않으면 return 'hasValue';
}
var a;
Console.log (F (a));
a = 0;
Console.log (F (a));
Console.log (F (b));
다시 잘못되었습니다 ..... console.log (f (b)); ... ... 오류가 발생합니다. ...