08_コンテキストを実行
2536 ワード
「文脈」とは何かをよく知るために.いくつかの例を見に来ました.
明さんは紅さんに「安心してください.彼はあなたの条件を承諾しました.」
読者の目には、明が言っている彼が誰を指しているのか分かりませんが、言葉を加えると、
強ちゃんの家から出たら、明さんは紅さんに「安心してください.彼はあなたの条件を承諾しました.」
この時は彼が誰を指しているか分かります.私たちはJavaScriptを例にしています.
1.コード分類(位置)グローバルコード 関数(ローカル)コード 2.グローバル実行コンテキストは、グローバルコードを実行する前に、Windowsをグローバル実行コンテキスト として決定する.は、グローバルデータを前処理する. var定義のグローバル変数=>undefinedは、windowの属性 に追加されます. function宣言のグローバル関数=>赋値(fun)をwindowに追加する方法 this=>レート は、グローバルコード の実行を開始する.
3.関数実行コンテキストは、関数を呼び出し、関数を実行する前に、対応する関数を作成してコンテキストオブジェクト(仮想的には、スタック内に存在する)を実行する .は、ローカルデータを前処理する. モダリティ変数=>赋値(実参)=>を実行コンテキストの属性として追加します. アーグメンnts=>賦値(実際参照リスト)は、実行コンテキストの属性 として追加されます. var定義の局所変数=>undefinedは、実行コンテキストの属性 として追加されます. function宣言の関数=>割り当て(fun)は、コンテキストを実行する方法 として追加される. this=>割当値(関数を呼び出すオブジェクト) は、関数コード の実行を開始します.は、グローバルコードが実行される前に、JSエンジンは、すべての実行コンテキストオブジェクト を管理するスタックを作成する.は、グローバル実行コンテキスト(window)の決定後、スタック に追加する.は、関数実行コンテキスト作成後、スタック に追加する.は、現在の関数が実行された後、スタックトップのオブジェクトを除去する .すべてのコードが実行された後、スタックにはwindowだけが残っています.図はJavaScript高級教程の中に があります.
以下のコードは順次何を出力しますか?プロセス全体でいくつかの実行コンテキストが発生しましたか?順番にgb:undefined fb:1 fb:2 fb:3 fe:3 fe:2 fe:1 ge:1 を出力します.は全部で5つのコンテキストオブジェクト を生成しました.
いくつかのテストテーマ
明さんは紅さんに「安心してください.彼はあなたの条件を承諾しました.」
読者の目には、明が言っている彼が誰を指しているのか分かりませんが、言葉を加えると、
強ちゃんの家から出たら、明さんは紅さんに「安心してください.彼はあなたの条件を承諾しました.」
この時は彼が誰を指しているか分かります.私たちはJavaScriptを例にしています.
// , `this` , “ ”
function someFunction() {
console.log(this.xxx)
}
// `this` `window` ( )
// `window.xxx` , `undefined`
someFunction() // undefined
// , “ ”, ; :
var test = { xxx: 'hello' }
someFunction.call(test) // "hello"
以下はシリコンバレーのJavaScript進級ノートです.1.コード分類(位置)
3.関数実行コンテキスト
以下のコードは順次何を出力しますか?プロセス全体でいくつかの実行コンテキストが発生しましたか?
console.log('gb: '+ i)
var i = 1
foo(1)
function foo(i) {
if (i == 4) {
return
}
console.log('fb:' + i)
foo(i + 1) // :
console.log('fe:' + i)
}
console.log('ge: ' + i)
いくつかのテストテーマ
/*
1: ,
*/
function a() {}
var a
console.log(typeof a) // 'function'
/*
2:
*/
if (!(b in window)) {
var b = 1
}
console.log(b) // undefined
/*
3:
*/
var c = 1
function c(c) {
console.log(c)
var c = 3
}
c(2) //
テスト問題3の実行手順については、var c //
function c(c){ //
console.log(c)
var c=3
}
c=1 // c , c 1
c(2) // c 。