作用域を徹底的に理解!
5858 ワード
作用域を理解する
前回の书いた闭包を结び付けて、鉄を热く打って作用の领域を讲义しにきて、闭锁と作用の领域を理解することに役立つことを望みます.スコープエネルギーは、コードの異なる部分から変数に対して、オブジェクトに対して、関数にアクセス可能性があるかどうかを決定します.javascriptでは、ローカルスコープの大域作用域(その後、クローズドと結合してチェーン作用領域に言及する)は名前の通り、局所作用域:関数の外部で読み取れない変数であり、関数の内部で局所変数と呼ばれる変数を定義し、局変数の作用領域は局所的である.
連鎖式の作用のドメインの構造を言います
チェーンの役割領域というのは閉鎖的な現象です.リンク型のスコープ構造は、サブアイテムが次々に上に向かって定義されたすべての変数を探すため、親項目のすべての変数はサブプロジェクトに対して開放されています.一方、親項はサブ項目の変数を持つことができません.下のコードのように、a 2関数はa 1関数に含まれています.a 2関数はa 1関数のすべての変数を得ることができます.しかし、a 1はa 2関数の変数を取れません.
—頑張って頑張ります!
前回の书いた闭包を结び付けて、鉄を热く打って作用の领域を讲义しにきて、闭锁と作用の领域を理解することに役立つことを望みます.スコープエネルギーは、コードの異なる部分から変数に対して、オブジェクトに対して、関数にアクセス可能性があるかどうかを決定します.javascriptでは、ローカルスコープの大域作用域(その後、クローズドと結合してチェーン作用領域に言及する)は名前の通り、局所作用域:関数の外部で読み取れない変数であり、関数の内部で局所変数と呼ばれる変数を定義し、局変数の作用領域は局所的である.
function btn(){
var a ="1"
console.log(a)//
}
console.log(a)//
グローバルスコープ:関数の外部で読み取れる変数で、関数の外部で定義される変数をグローバル変数と呼び、グローバル変数のスコープは大域的です.ページ上のすべてのスクリプトと関数がアクセスできます.var a ="1"
function btn(){
console.log(a)//
}
console.log(a)//
注意:関数の内部でvarを使用して変数を定義していない場合、この変数は関数の内部にありますが、大域変数であり、作用領域も大域的です.次のとおりですfunction btn(){
a ="1"
console.log(a)//
}
console.log(a)//
関数に変数が定義されていますが、この変数はどれぐらい生きられますか?いつ廃棄されますか?局部変数:関数の開始時に局所変数が作成されます.関数の実行が完了すると、これらの局所変数はグローバル変数を破壊します.定義時に有効になり、ページが閉じた時に破壊されます.そのため、異なる関数で同じ変数名が使用できます.注意:関数としてのパラメータ(例えば、パラメータ)も、関数内の変数=局所変数=作用領域に属する部分です.連鎖式の作用のドメインの構造を言います
チェーンの役割領域というのは閉鎖的な現象です.リンク型のスコープ構造は、サブアイテムが次々に上に向かって定義されたすべての変数を探すため、親項目のすべての変数はサブプロジェクトに対して開放されています.一方、親項はサブ項目の変数を持つことができません.下のコードのように、a 2関数はa 1関数に含まれています.a 2関数はa 1関数のすべての変数を得ることができます.しかし、a 1はa 2関数の変数を取れません.
function a1(){
var w="10"
function a2(){
var y="20"
console.log(w)//
}
console.log(y)//
}
実は上のコードを見て、何がクローズドかを考えています.外部関数で内部関数を定義するというのはクローズドの書き方です.外部関数が内部関数で定義されている変数を得るとどうやって解決しますか?前のブログでも解決方法を説明しました.function a1 (){
var w3=10
return function (){
console.log(" 3:",w3)
}
}
btn3()()
内部関数を匿名関数として返します.作用域を簡単に説明しましたが、やはりよく分かります.オリジナルは簡単ではないので、分かりやすい友達に応援してほしいです.—頑張って頑張ります!