js能力提高 三 作用域與閉包

2021-09-26 08:21:05 字數 803 閱讀 3667

在js中沒有塊級作用域,只有函式和全域性作用域。

// 無塊級作用域

if (true)

console.log(name)

// 函式和全域性作用域

var a = 100;

function fn()

console.log('global', a)

fn()

作用域鏈

當前函式沒有變數的時候,它會自動去它的父級作用域去查詢,如果沒有會依次找,到全域性作用域如果查詢不到,就會報錯
閉包的使用場景

1. 函式作為返回值

function f1()

}var f1 = f1()

f1()

----------------------------------

2.函式作為引數

function f1()

}var f1 = f1()

function f2(fn)

f2(f1)

閉包在實際開發中的應用

// 閉包實際應用中主要用於封裝變數,收斂許可權

function isfirstload() else

}}// 使用

var firstload = isfirstload()

firstload(10) // true

firstload(10) // false

firstload(20) // true

JS作用域與閉包

vo ao 的解釋 1.作用域 es5中只有全域性作用域和函式作用域,我們都知道他沒有塊級作用域。es6中多了乙個let,他可以保證外層塊不受內層塊的影響。即內層塊形成了乙個塊級作用域,這是let的乙個特點。var a 1 function f1 f2 f1 2,1,2 上面的 有三個執行上下文環境...

作用域與閉包

執行上下文 範圍 一段或者乙個函式 全域性 變數定義 函式宣告 一段 函式 變數定義 函式宣告 this arguments 函式 ps 注意 函式宣告 和 函式表示式 的區別 console.log a var a 100 fn zhangsan function fn name this thi...

作用域與閉包

變數存在並產生作用的環境上下文。在es5規範中只有兩種作用域 函式可以巢狀,而每個函式都有自己的作用域,當進入乙個函式的時候,函式環境就會被壓入乙個環境棧當中,當函式執行完畢之後又會出棧,將控制權轉交給外面一層的函式。內部呼叫外部 var a 3 function add add console.l...