JavaScriptコア技術開発読書ノートの解読(第五章)
2156 ワード
第五章作用ドメインと作用ドメインチェーン
1.スコープ
一般的な作用域は二つあり、大域作用域と関数作用域がある.ES 6にブロックレベルのスコープが追加されました.グローバルスコープで宣言された変数と関数はコードのどこにでもアクセスできます.グローバルスコープには、次の3つのケースがあります.1)グローバルオブジェクトにある属性と方法
2.直ちに関数を実行する(Immediately Invoked Function Expression、IIIIIIIIIIIIFSE)
ブロックレベルのスコープが出現する前に、IIIIFEを使用してブロックレベルのスコープをシミュレートします.
3.作用ドメインチェーン
作用地域チェーンの知識については、本の説明はあまり詳しくないです.私もよく分かりません.後でまた追加します.
以上はJavaScriptの核心技術に対して開発して第五章の読書ノートを解読するので、コードワードは容易ではありませんて、作者の著作権を尊重して下さい.By BeLLESS 2018.6.30:11
1.スコープ
一般的な作用域は二つあり、大域作用域と関数作用域がある.ES 6にブロックレベルのスコープが追加されました.グローバルスコープで宣言された変数と関数はコードのどこにでもアクセスできます.グローバルスコープには、次の3つのケースがあります.1)グローバルオブジェクトにある属性と方法
window.name;
window.location;
window.top;
……
2)最外層で宣言された変数と方法var foo = function () {}
var str = 'out variable';
var arr = [1, 2, 3];
function bar () {}
3)非厳密モードでは、関数のスコープに定義されていませんが、直接複製された変数と方法(読めませんでした)function foo () {
bar = 20;
}
function fn () {
foo();
return bar + 30;
}
fn(); // 50
関数のスコープ内で宣言された変数と方法は、他のインコヒーレントなスコープによってアクセスすることができず、下の階層の副作用ドメインによってのみアクセスできます.function foo () {
var a = 20;
var b = 30;
}
foo();
function bar () {
return a + b;
}
bar(); // Uncaught ReferenceError
作用域の制限のため、barでは変数aとbにアクセスできないので、関数実行報Unicagt ReferenceErrを実行します.function foo () {
var a = 20;
var b = 30;
function bar () {
return a + b;
}
return bar();
}
foo(); // 50
barにおける作用域はfooの自己作用領域であるため、変数aおよびbにアクセスすることができる.ブロックレベルのスコープはES 6によって追加されたletおよびconstによって表される.function f1 () {
let n = 5;
if (true) {
let n = 10;
}
console.log(n); // 5
}
上の関数には二つのコードブロックがあり、変数nを宣言し、実行後に5を出力します.これは外層コードブロックが内層コードブロックの影響を受けないことを表しています.二回ともvar定義変数nを使用すれば、最後に出力される値は10です.2.直ちに関数を実行する(Immediately Invoked Function Expression、IIIIIIIIIIIIFSE)
ブロックレベルのスコープが出現する前に、IIIIFEを使用してブロックレベルのスコープをシミュレートします.
var a = 2;
(function foo () {
var a = 3;
console.log(a); // 3
})();
console.log(a); // 2
関数はペアの括弧内に含まれているので、末尾にもう一つの括弧を加えることで、すぐにこの関数を実行することができます.IIIIIFEのもう一つのムチの階段の使い方は、それらを関数として呼び出してパラメータを渡すことです.var a = 2;
(function IIFE (global) {
var a = 3;
console.log(a); // 3
console.log(global.a); // 2
})(window);
console.log(a); // 2
私たちはwindowオブジェクトの参照を転送しますが、パラメータをglobalと名づけましたので、コードスタイルでグローバルオブジェクトに対する引用は「グローバル」という文字がない変数を引用するよりも明らかになりました.ブロックレベルのスコープの知識をもっと知りたいです.ここをクリックしてください.3.作用ドメインチェーン
作用地域チェーンの知識については、本の説明はあまり詳しくないです.私もよく分かりません.後でまた追加します.
以上はJavaScriptの核心技術に対して開発して第五章の読書ノートを解読するので、コードワードは容易ではありませんて、作者の著作権を尊重して下さい.By BeLLESS 2018.6.30:11