考點:this的不同場景如何取值;手寫bind函式;閉包的實際開發場景,舉例說明。
自由變數
二、閉包
三、this
bind()
閉包的應用
if
(true
)console.
log(a)
//報錯
函式作為引數被傳遞。
函式作為返回值。
function
create
(params)
}let fn =
create()
const a =
200fn()
//100
向上級查詢,不是在執行的上方查詢!!!
this在執行的時候定義!不是在確定中使用。
function
fn1()fn
()//window
fn1.
call()
// const fn2 = fn1.
bind()
fn2()//
const zhangsan =
wait()
)}}const zhangsan =
wait()
)}}class
people
let zhangsan =
newpeople
('zhangsan'
)zhangsan.
sayhai()
//this 是張三。
使用方法:
fn.bind(物件,值,…)
function
fn1(a,b,c)
console.
log(a,b,c)
//10,20,30
return
'this is fn1'
}const fn2 = fn1.
bind(,
10,20,
30)const res =
fn2(
)console.
log(res)
//this is fn1
實現原理
function
fn1(a,b,c)
function.prototype.
bind1
=function()
}const fn2 = fn1.
bind1(,
10,20,
30)const res =
fn2(
)console.
log(res)
做乙個簡單地cache ,資料儲存
//閉包隱藏資料 提供api
function
creatcache()
//閉包中的資料,被隱藏,不能被訪問
return
,get
:function
(key)}}
const c =
creatcache()
c.set
('a'
,100
)console.
log(c.
get(
'a')
)
js 作用域和閉包
作用域應用的特色情況,有兩種表現 自由變數的查詢,在函式定義的地方,向上級作用域查詢不是在執行的地方 函式作為返回值 function create const fn create const a 200 fn 100 函式作為引數 function print fn const a 100 fun...
js的作用域和閉包
1.作用域 乙個變數的可用範圍 全域性作用域 除了函式內,客廳 區域性作用域 函式內 小房間 全域性變數 在全域性作用域內宣告的變數 客廳裡面的東西 區域性變數 在區域性作用域內宣告的變數 你臥室裡面的東西 全域性作用域不能訪問區域性,區域性作用域可以訪問全域性 2.閉包 用來解決全域性汙染的,用來...
簡述JS作用域 作用域鏈和閉包
定義 乙個變數的作用域是程式源 中定義這個變數的區域。全域性變數擁有全域性作用域,區域性變數只有區域性作用域。塊級作用域 在es6 let變數宣告出來之前,js是沒有塊級作用域的概念的,函式內部定義的變數才是區域性變數,具體見下面的 var a 1 for var i 0 i 10 i functi...