ホームページ >ウェブフロントエンド >jsチュートリアル >try-catch を使用して、変数が宣言されているか、未宣言であるか、または unassigned_javascript スキルであるかを判断します。

try-catch を使用して、変数が宣言されているか、未宣言であるか、または unassigned_javascript スキルであるかを判断します。

WBOY
WBOYオリジナル
2016-05-16 16:55:391138ブラウズ

その目的は、変数が宣言されていても割り当てられていない場合、値を直接割り当てることができ、変数のスコープを変更できないことです

宣言されていない場合は、再宣言してください。 >
インターネットで調べたところ、一般的なメソッドは if(typeof(a)=='unknown'){var a='ss';}、

ですが、このメソッドは未宣言の場合は true を返しますまたは未割り当ての変数を宣言した場合。その場合:

コードをコピーします コードは次のとおりです。 🎜>関数 f(){ if(typeof(a)=='未定義')
{var a=1;}
}
f(); a);


は、f() が同じ名前のローカル変数のみを宣言するため、未定義と表示されます。

ただし、宣言されていない変数の場合: (noValueV==null) の場合は true を返します。

未割り当ての変数: (noDeclareV==null) の場合はエラーが報告されます。 。

このように動作します:




コードをコピーします

コードは次のとおりです: function f ( ){ if(typeof(v)=='unknown'){ try{ if(v==null)// v は宣言されているが代入されていないことを示します
v=1; // v がグローバル変数の場合、スコープは変更されません
}
catch(err){//v が宣言されていないことを示します
var v;v=2 ;
}
}
console.log(v);
}
f( );


js には次の機能があるため、これも誤りです。 「事前宣言」、つまり関数 関数内で宣言された変数は、関数内のどこで宣言されているかに関係なく、この関数およびこの関数のサブ関数内で参照できます。

したがって、上記の var v; により、状況に関係なく、try のみが使用されます。

変更します:




コードをコピーします

コードは次のとおりです: function f( ){ if(typeof(v)=='unknown'){ try{ if(v==null)// v は宣言されているが割り当てられていないことを示します
v=1; / / v がグローバル変数の場合、スコープは変更されません
}
catch(err){//v が宣言されていないことを示します
eval('var v');v =2; / /ここは違います
}
}
console.log(v);


以上です。

は判定関数として書かれており、「noDeclare」を返すのは変数が宣言されていないことを意味し、「noValue」は変数が宣言されているが値が割り当てられていないことを意味し、「hasValue」は変数が値を割り当てられていないことを意味します。宣言され、値が割り当てられています:



コードをコピー


コードは次のとおりです:
function f (v){ if(typeof(v)=='未定義'){ try{ if(v==null) return 'noValue' }
catch(err){
return 'noDeclare';
}
else return 'hasValue';
console.log(a; ));
a=0;
console.log(f(b));


. console.log(f(b)); エラーが報告されます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。