在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...