目的は、変数が未割り当てと宣言されている場合、変数の範囲を変更できないことです。
宣言されていない場合は、それを再作成します。
オンラインで検索したところ、一般的な方法は(typeof(a)== 'undefined'){var a = 'ss';}です。
ただし、この方法は、宣言されていない変数または未割り当ての変数に対してTRUEを返します。もしそうなら:
コードコピーは次のとおりです。
var a;
関数f(){
if(typeof(a)== '未定義')
{var a = 1;}
}
f();
console.log(a);
F()が同じ名前のローカル変数を宣言するだけで、未定義に表示されます。
ただし、それが未割り当てと宣言された変数である場合:if(novaluev == null)、それはtrueを返します。
未表変数:if(nodeclarev == null)、エラーが報告されます。
だから可能性があります:
コードコピーは次のとおりです。
関数f(){
if(typeof(v)== 'undefined'){
試す{
if(v == null)// vが割り当てられていないと宣言されていることを示します
v = 1; // vがグローバル変数である場合、そのスコープは変更されません
}
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; // vがグローバル変数である場合、そのスコープは変更されません
}
catch(err){// vが宣言されていないことを示します
eval( 'var v'); v = 2;
}
}
console.log(v);
}
f();
それだけです。
判断機能として書かれた「nodeclare」を返すことは、変数が宣言されていないことを意味し、「novalue」とは、変数が割り当てされていないと宣言されたことを意味し、「hasvalue」とは、変数が割り当てられたと宣言されていることを意味します。
コードコピーは次のとおりです。
関数f(v){
if(typeof(v)== 'undefined'){
試す{
if(v == null)
「NOVALUE」を返します。
}
catch(err){
「nodeclare」を返します。
}
}
それ以外の場合は、「hasvalue」を返します。
}
var a;
console.log(f(a));
a = 0;
console.log(f(a));
console.log(f(b));
再び間違っています..... console.log(f(b)); ...