作用域:變量和函數(shù)可訪問(wèn)的內(nèi)容
作用域可分為兩種:局部作用域,全局作用域
局部作用域:只在固定的代碼片段中可以訪問(wèn)
全局作用域:在代碼的任何地方都可以訪問(wèn)
全局作用域存在的幾種形式:
1.最外層函數(shù)和最外層函數(shù)外面定義的變量擁有全局作用域
2.所有未定義直接賦值的變量自動(dòng)具有全局作用域
3.所有window對(duì)象的屬性都擁有全局作用域
局部變量存在形式:
函數(shù)內(nèi)部聲明,并且以var修飾的變量是局部變量
函數(shù)的參數(shù)
作用域鏈:
在js中,萬(wàn)物皆對(duì)象,函數(shù)也是一個(gè)對(duì)象,擁有可以通過(guò)代碼訪問(wèn)的屬性和一系列的僅供js引擎所訪問(wèn)的內(nèi)部屬性,其中一個(gè)屬性就是[[scope]],[[scope]]中包含了函數(shù)被創(chuàng)建的作用域中對(duì)象的集合,這個(gè)集合就被稱為函數(shù)的作用域鏈,它決定了哪些數(shù)據(jù)能被訪問(wèn)
當(dāng)代碼在環(huán)境中執(zhí)行的時(shí)候,就會(huì)形成作用域鏈,他的用途是保證對(duì)執(zhí)行環(huán)境中有訪問(wèn)權(quán)限的變量和函數(shù)進(jìn)行有序訪問(wèn)
每個(gè)環(huán)境都可以向上搜索作用域鏈,以查詢變量和函數(shù)名,但任何環(huán)境都不能向下搜索作用域鏈而進(jìn)入另一個(gè)執(zhí)行環(huán)境