この盲目で原因のない研究とテストが、私をかすかにしました。これを行う必要がありますか?実際、原則を理解した後、それほど多くのテストを行い、ルールを描く必要はありません。 ECMAScriptルールが定義されています。
VARのルールは、VARを使用して内部変数である変数を宣言することです。そうでなければ、機能のレイヤーがいくつあるかに関係なく、最初にグローバル変数を呼び出すことです。
これのルールは次のとおりです。これはメソッド関数で常にそれ自体を指し、これは通常の関数では常にdomwindowを指します。
// goddamntest1function foo(){var a = 123; //ローカル変数、すべてのサブファクションのグローバル変数this.a = 456; // object Property(function(){alert(a); // 123、global alert(this.a); //未定義、通常の関数、この点はdomwindow})(); } var f = new foo(); // goddamntest2function foo(){var a = 123; this.a = 456; (function(a){//ローカル宣言アラート(a); // 456、グローバルは関数によって宣言されたローカルでオーバーライドされます})(this.a); } var f = new foo(); // goddamntest3function foo(){var a = 123; this.a = 456; (function(){alert(a); // 123、global alert(this.a); // undefined、domwindow this.b = 789; // window.b = 789})(); (function(){alert(this.b); // 789、window.b})(); } var f = new foo(); (function(){alert(this.b); // 789、window.b})(); // goddamntest4function foo(){(function(){this.b = 789; // window.b = 789})(); (function(){alert(this.b); // 789、window.bvar b = 0; alert(b); // 0、そのようなテストは書かれています!})()(); } var f = new foo(); (function(){alert(this.b); // 789、window.balert(b); // 789、window.b})()();驚くべきことに、最後のアラート(b)は789をもたらしました。//まったく驚きはありません!
// goddamntest5function foo(){(function(){this.b = 789; // window.b = 789})(); (function(){alert(this.b); // 789、window.balert(b); // undefined、global var b = 0; alert(b); // 0、そのようなテストもあります!})(); } var f = new foo(); (function(){alert(this.b); // 789、window.balert(b); // 789、window.b})()();PS:ローカル変数を削除するJSメソッド
alert( 'value:'+str+'/ttype:'+typeof(str))//変数を宣言する前に、var str = "dd"; alert( 'value:'+str+'/ttype:'+type: '+type(str)//変数を宣言および割り当てた後、str = redeed; //ローカル変数アラートを削除する( '値:'+str+'/ttype:'+typeof(str))//変数をキャンセルしたら、最初のものと同じstr =未定義を参照してください
上記は、編集者によって紹介されたJSグローバル変数とローカル変数の最新の分析です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!