js 作用域和作用域鏈
阿新 • • 發佈:2020-08-10
一、作用域
在 Javascript 中,作用域分為全域性作用域和函式作用域
全域性作用域:
程式碼在程式的任何地方都能被訪問,window 物件的內建屬性都擁有全域性作用域。
函式作用域:
在固定的程式碼片段才能被訪問
例子:
作用域有上下級關係,上下級關係的確定就看函式是在哪個作用域下建立的。如上,fn作用域下建立了bar函式,那麼“fn作用域”就是“bar作用域”的上級。
作用域最大的用處就是隔離變數,不同作用域下同名變數不會有衝突。
變數取值:到建立 這個變數 的函式的作用域中取值
二、作用域鏈
一般情況下,變數取值到建立 這個變數 的函式的作用域中取值。
但是如果在當前作用域中沒有查到值,就會向上級作用域去查,直到查到全域性作用域,這麼一個查詢過程形成的鏈條就叫做作用域鏈。
var x = 10; function fn(){ console.log(x); } function show(f){ var x = 20; (function(){ f(); // 10 })() } show(fn);