作用域和閉包

2022-09-14 23:54:29 字數 1415 閱讀 5672

現有宣告後有賦值

宣告在編譯時會提公升位置,提公升時函式會優先變數,如果是同名函式順序排在後面的會覆蓋前面的函式

函式表示式:

立即執行的函式表示式

var a = 2;

(function iife(global) )(window);

塊作用域和閉包

閉包:

function foo() 

return bar

}var baz = foo();

baz() // 3

for(var i = 0; i< 5; i++),i*1000)

}// 5

// 5

// 5

// 5

// 5

// 不是期待的結果,因為他們要找i的話就要取的同乙個i

解決方式

閉包:for(var i = 0; i< 5; i++),i*1000)

})(i)

}塊作用域:

for(let i = 0; i< 5; i++),i*1000)

}

es6之前模組化:

var foo = (function greeting() 

function goodafternoon()

function goodevening()

return

})()

var mymoudles = (function manager() ;

function define(name,deps,impl)

export hello;

// import bar from "bar"

module bar from "bar"

bar.hello("xiao jie jie");

// import 是將乙個模組中的乙個或者多個api倒入當前作用域中

// module是將整個模組的api匯入並繫結到乙個變數上

this與詞法作用域

this指向問題:

var obj = 

}var id = "not awesome";

obj.cool();// awesome

settimeout(obj.cool,100);//not awesome

解決方法:

第一種

var obj = ,100)}}}

obj.cool();// awesome

第二種

var obj = .bind(this),100)}}}

obj.cool();// awesome

第三種

var obj = ,100)}}}

obj.cool();// awesome

作用域和閉包

給執行上下文環境下乙個通俗的定義 在執行 之前,把將要用到的所有的變數都事先拿出來,有的直接賦值了,有的先用undefined占個空。全域性 的上下文環境資料內容為 1 普通變數 包括函式表示式,如 var a 10 宣告 預設賦值為undefined 2 函式宣告 如 function fn 賦值...

作用域和閉包

題目 知識點 1 執行上下文 2 this 3 作用域 4 作用域鏈 5 閉包 一 執行上下文 ps 函式宣告和函式表示式的區別 執行上下文 console.log a undefined var a 10 fn 張三 22 張三 22 function fn name 在script標籤內的全域性...

作用域 閉包

1.js執行順序 語法分析 預編譯 先生成go物件 1.函式執行生成ao物件 2.形參和變數作為ao物件的鍵名,鍵值是undefined 3.實參賦值給形參 4.在函式中找到函式宣告,把函式作為ao物件的屬性名,屬性值為函式體 執行js 作用域 變數作用範圍 1.作用域 變數作用範圍 1 函式作用域...