その目的は、変数が宣言されていても割り当てられていない場合、値を直接割り当てることができ、変数のスコープを変更できないことです
宣言されていない場合は、再宣言してください。 >
インターネットで調べたところ、一般的なメソッドは if(typeof(a)=='unknown'){var a='ss';}、
ですが、このメソッドは未宣言の場合は true を返しますまたは未割り当ての変数を宣言した場合。その場合:
コードをコピーします コードは次のとおりです。 🎜>関数 f(){ if(typeof(a)=='未定義')
{var a=1;}
}
f(); a);
は、f() が同じ名前のローカル変数のみを宣言するため、未定義と表示されます。
ただし、宣言されていない変数の場合: (noValueV==null) の場合は true を返します。
未割り当ての変数: (noDeclareV==null) の場合はエラーが報告されます。 。
このように動作します:
コードをコピーします
v=1; // v がグローバル変数の場合、スコープは変更されません
}
catch(err){//v が宣言されていないことを示します
var v;v=2 ;
}
}
console.log(v);
}
f( );
js には次の機能があるため、これも誤りです。 「事前宣言」、つまり関数 関数内で宣言された変数は、関数内のどこで宣言されているかに関係なく、この関数およびこの関数のサブ関数内で参照できます。
したがって、上記の var v; により、状況に関係なく、try のみが使用されます。
変更します:
コードをコピーします
v=1; / / v がグローバル変数の場合、スコープは変更されません
}
catch(err){//v が宣言されていないことを示します
eval('var v');v =2; / /ここは違います
}
}
console.log(v);
以上です。
は判定関数として書かれており、「noDeclare」を返すのは変数が宣言されていないことを意味し、「noValue」は変数が宣言されているが値が割り当てられていないことを意味し、「hasValue」は変数が値を割り当てられていないことを意味します。宣言され、値が割り当てられています:
コードをコピー
コードは次のとおりです:
catch(err){
return 'noDeclare';
}
else return 'hasValue';
console.log(a; ));
a=0;
console.log(f(b));
. console.log(f(b)); エラーが報告されます。