03JS基礎 作用域和閉包

2021-10-16 17:17:49 字數 1678 閱讀 4537

考點: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...