JavaScriptのスコープの概念については、実際のプロセスとthisの指向について説明します.
2177 ワード
これは私の最初のブログです.これからは暇な時に自分が勉強した知識を皆さんに分かち合うかもしれません.
ブログに技術的なミスがあったら、大神さんにも指摘してもらいたいです.
通常のプロセスやオブジェクト指向プログラミングの動作モードでは、私たちの通常の思考は、プログラムが上から下に行くことです.しかし、何度も実践してJavaScriptを編纂する中で、実はJavaScriptは上から下へ識別するのではないことを発見することができます.
(本ブログのコードはすべてJavaScriptコードです.)
下記のコードのように:
運転後、マーク1のポップアップ枠はundefined、第2のポップアップ2、第3のポップアップ内容はnumberと表示されます.
4とラベル付けされている行を削除すると、1番目には2がイジェクトされます(関数外部変数が取得されました).
これがjsの役割領域です.
上記のコードを了解したら、JSの運行パターンを紹介します.
ブラウザでJSコードをロードした後、彼はまず普段のプログラム言語のように上から下まで読むのではなく、先にすべての定義文を探します.
例えばvar t、function FN(){}という定義文.すべての定義文を習得してから、彼は次の操作、すなわち実行文に入ります.
上のコードをもう一度修正します.次のようにします.
前に言ったJSの運行規則によって、まず、JSは定義文を識別します.
1.定義
var x
var y
Fn(){}
2.実行
x=1;
y="2"
Fn() =============>この関数に入ると、同じように定義してから実行します.
1.定義
var x;
2.実行
x=x+y; ここのxはvar xが定義された後、賦課されていません.
ここxはundefinedですが、yは定義されていません.外部から呼び出して、文字2です.
つぎはぎのxはundefined 2です.
return x; 「undefined 2」を返しました. これでFnメソッドの実行は終了します.
alert(「undefined 2」+1)ポップアップコンテンツは「undefined 21」であるべきです.
続いて、私達は作用領域をthisと配合して使います.以下のコードを見てください.
4行目にはthis.num=3のthisがobjを指しています.
直後に実行された匿名関数があります.すべての自己実行関数では、指向性が指定されていないthisは、windowを指します.
alert(this.num)に実行すると、window.numはundefinedなので、今回のalertはundefinedを弾きます.
はい、以上はjavaScriptの機能領域と実際の運行過程の体現と部分thisの指向です.ここを見て、新しい認識ができたと信じています.
もし私のブログの文章の中で新しい収穫があったら、私を励ましてください.
私は暇な時に皆さんにもっと多くの知識を共有します.
ブログに技術的なミスがあったら、大神さんにも指摘してもらいたいです.
通常のプロセスやオブジェクト指向プログラミングの動作モードでは、私たちの通常の思考は、プログラムが上から下に行くことです.しかし、何度も実践してJavaScriptを編纂する中で、実はJavaScriptは上から下へ識別するのではないことを発見することができます.
(本ブログのコードはすべてJavaScriptコードです.)
下記のコードのように:
var t="2";
FN();
function FN(){
var t; //4
alert(t); //1
t=2;
alert(t); //2
alert(typeof t); //3
}
運転後、マーク1のポップアップ枠はundefined、第2のポップアップ2、第3のポップアップ内容はnumberと表示されます.
4とラベル付けされている行を削除すると、1番目には2がイジェクトされます(関数外部変数が取得されました).
これがjsの役割領域です.
上記のコードを了解したら、JSの運行パターンを紹介します.
ブラウザでJSコードをロードした後、彼はまず普段のプログラム言語のように上から下まで読むのではなく、先にすべての定義文を探します.
例えばvar t、function FN(){}という定義文.すべての定義文を習得してから、彼は次の操作、すなわち実行文に入ります.
上のコードをもう一度修正します.次のようにします.
var x=1;
var y="2";
alert(Fn() + x);
function Fn(){
var x=x+y;
return x;
}
私たちはポップアップの枠内でどんな内容が得られますか?前に言ったJSの運行規則によって、まず、JSは定義文を識別します.
1.定義
var x
var y
Fn(){}
2.実行
x=1;
y="2"
Fn() =============>この関数に入ると、同じように定義してから実行します.
1.定義
var x;
2.実行
x=x+y; ここのxはvar xが定義された後、賦課されていません.
ここxはundefinedですが、yは定義されていません.外部から呼び出して、文字2です.
つぎはぎのxはundefined 2です.
return x; 「undefined 2」を返しました. これでFnメソッドの実行は終了します.
alert(「undefined 2」+1)ポップアップコンテンツは「undefined 21」であるべきです.
続いて、私達は作用領域をthisと配合して使います.以下のコードを見てください.
var obj={
num:2,
add:function(){
this.num=3;
(function(){
alert(this.num);
this.num=4;
})();
}
};
obj.add();
上のコードでは主にObj.addを呼び出しましたが、addは関数体です.4行目にはthis.num=3のthisがobjを指しています.
直後に実行された匿名関数があります.すべての自己実行関数では、指向性が指定されていないthisは、windowを指します.
alert(this.num)に実行すると、window.numはundefinedなので、今回のalertはundefinedを弾きます.
はい、以上はjavaScriptの機能領域と実際の運行過程の体現と部分thisの指向です.ここを見て、新しい認識ができたと信じています.
もし私のブログの文章の中で新しい収穫があったら、私を励ましてください.
私は暇な時に皆さんにもっと多くの知識を共有します.