js変数のスコープ
1403 ワード
title:変数作用ドメインdate:2016-11-24 19:58 tags:javascript categories: javascript 静的スコープまた、この法律の作用領域 とも言われています.プログラムで定義された位置決定
ダイナミックスコーププログラムの実行時刻によって が決定されます.
JS変数のスコープ jsは、静的作用領域 を使用する. jsは、ブロックレベルのスコープ(グローバルスコープ、関数スコープ) がない. ES 5における用語環境管理静的作用領域 ロケーション環境記録 モダリティ 関数宣言 変数 外部環境への参照(outer) 環境記録の初期化-事前にグローバルコードまたは関数コードを実行する前に、まず関数宣言、変数を環境記録に定義します.
語法環境-width
語法環境try-catch
関数名付きの関数式
var x = 10 ;
function foo(){
alert(x);
}
function bar(){
var x = 20;
foo();
}
bar()
ここでfoo()関数を実行すると、その内部にxが定義されていないため、プログラムはその外層作用域(大域)を探します.ダイナミックスコープ
JS変数のスコープ
語法環境-width
var foo = "abc";
width ({
foo: "bar"
}) {
function f(){
alert(foo);
};
(function(){
alert(foo);
})();
f();
}
withはオブジェクトに入ってきました.このオブジェクトを一時的な用語環境に定義して、一時的なスコープを作成します.ここでは関数表現はこのスコープを使用します.関数宣言はまだグローバルスコープを使用しますか?語法環境try-catch
try{
var e = 10;
throw new Error();
}catch(e){
function f(){
alert(foo);
};
(function(){
alert(foo);
})();
f();
}
catchは一時的な環境を作成します.匿名関数を実行するとこの一時的な環境が使用されます.関数宣言の環境はまだグローバル環境に向けられていますか?関数名付きの関数式
(function A(){
A = 1;
alert(A);
})()
ここでは実行時に新しい用語環境を作成し、Aをこの環境記録に定義し、Aは修正できないので、ここでは語句A=1
は効果がない.