js 做用域、做用域鏈

1、做用域函數

域就是空間、範圍的概念,而做用域簡單來講就是變量與函數可訪問的範圍。在咱們js中做用域是靠函數來造成的,函數內的變量函數外不可訪問。spa

做用域分全局做用域和局部做用域。code

全局做用域:任何地方都能訪問到的對象擁有全局做用域;對象

主要有如下三種狀況:blog

1.函數外部定義的變量擁有全局做用域;作用域

2.未定義直接賦值的變量自動聲明爲擁有全局做用域io

3.window對象的屬性擁有全局做用域console

var n=2;
function fn(){
var a =4;
c=5;
console.log(n);//2
}
fn();
console.log(fn());//4
console.log(n);//2
console.log(a);//報錯
console.log(c);//5

局部做用域:通常只在固定的代碼片斷內可訪問到,而對於函數外部是沒法訪問的,最多見的例如函數內部function

var n=2;
 function fn(){
      var a =4;
}
fn();
console.log(n);//2
console.log(a);//報錯

做用域鏈:簡單來講,就是聲明一個函數時,局部做用域一級一級向上包起來,相似鏈狀。class

當咱們執行函數時,先從函數內部找尋局部變量,若沒用則向建立函數的做用域尋找,依次向上。

 
 

var a=1; function fn1(){ var a =2; var b='22'; fn2(); function fn2(){ var a=3; fn3(); function fn3(){ var a =4; console.log(a);//4 console.log(b);//22 } } } fn1()

相關文章
相關標籤/搜索