午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

詳解JavaScript作用域、作用域鏈和閉包的用法

瀏覽:192日期:2023-10-15 17:02:14

1. 作用域

作用域是指可訪問的變量和函數(shù)的集合。

作用域可分為全局作用域和局部作用域。

1.1 全局作用域

全局作用域是指最外層函數(shù)外面定義的變量和函數(shù)的集合。

換言之,這些最外層函數(shù)外面定義的變量和函數(shù)在任何地方都能訪問。

舉個(gè)例子:

// 最外層定義變量var a = 1;console.log(a); // 最外層可以訪問function fnOne() { // 最外層函數(shù) console.log(a); // 函數(shù)內(nèi)可以訪問 function fnTwo() { // 子函數(shù) console.log(a); // 子函數(shù)內(nèi)也可以訪問 }}// 說明在最外面定義一個(gè)變量,不僅在最外面可以訪問,在函數(shù)內(nèi)也能訪問,在函數(shù)的子函數(shù)內(nèi)也能訪問。

1.2 局部作用域

局部作用域是指在函數(shù)內(nèi)部定義的變量和函數(shù)的集合。

換言之,這些在函數(shù)內(nèi)部定義的變量和函數(shù),在函數(shù)外面是無法訪問的,只能在函數(shù)內(nèi)部(包括函數(shù)的子孫函數(shù))訪問。

舉個(gè)例子:

function fnThree() { // 在函數(shù)內(nèi)定義變量 var b = 2; console.log(b); // 函數(shù)內(nèi)部可以訪問 function fnFour() { console.log(b); // 子函數(shù)內(nèi)也能訪問 }}// 函數(shù)外不能訪問//console.log(b); // 說明在函數(shù) fnThree 中定義一個(gè)變量 b ,在函數(shù)內(nèi)可以訪問,在子函數(shù) fnFour 中也能訪問,但在 函數(shù) fnThree 外是不能訪問的。

2. 作用域鏈

從上面的兩個(gè)例子可以看出,最里層的子函數(shù)不僅可以訪問最外層函數(shù)內(nèi)的變量,還能訪問最外層函數(shù)外的全局變量。

這是因?yàn)椋趧?chuàng)建最外層函數(shù)的時(shí)候,會把全局作用域拿過來,然后在創(chuàng)建子函數(shù)時(shí)候,又會把最外層的作用域(包括全局作用域)拿過來,就這樣一環(huán)扣一環(huán),就形成了作用域鏈。

所以,作用域鏈?zhǔn)侵竷?nèi)層函數(shù)擁有外層函數(shù)到最外層(最外層函數(shù)外,全局)的所有作用域列表。

3. 閉包

閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。(——百度百科)

從上面的第二個(gè)例子可知,函數(shù)外是不能訪問函數(shù)內(nèi)部定義的局部變量,但是閉包提供了可能。

舉個(gè)例子:

function User() {// 定義私有變量var userName = 'default';// 提供 setUserName() 方法function setUserName(uName) {userName = uName;}// 提供 getUserName() 方法function getUserName() {return userName;}// 將方法對外開放return {set: setUserName,get: getUserName}}var user1 = User();user1.set(’tom’);console.log(user1.get());var user2 = User();user2.set(’jack’);console.log(user2.get());// 說明User 函數(shù)內(nèi)部定義變量 uesrName ,并在內(nèi)部定義兩個(gè)子函數(shù)操作 userName,最后將兩個(gè)子函數(shù)返回(一個(gè)可直接放回,多個(gè)可放到對象中返回。)。這樣,在函數(shù)外面可以調(diào)用子函數(shù)訪問函數(shù)內(nèi)部的變量,這兩個(gè)子函數(shù)便實(shí)現(xiàn)了閉包的功能。

以上就是詳解JavaScript作用域、作用域鏈和閉包的用法的詳細(xì)內(nèi)容,更多關(guān)于JavaScript作用域、作用域鏈和閉包的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 色无极亚洲影院 | 欧美成人自拍视频 | 性生活短视频 | 劲爆欧美第一页 | 色99在线| 亚洲成人精品在线观看 | 水牛av| 免费在线看黄视频 | 国产美女91呻吟求 | 国外黄色片 | 久久六六 | 成人高清在线观看 | 91精品在线观看视频 | 九九热久久免费视频 | 国产亚洲精品精品精品 | av第一页 | 国产美女精品 | 成人黄网免费观看视频 | 在线观看免费视频一区 | 亚洲福利在线播放 | 日韩亚洲在线 | 久久亚洲精品小早川怜子 | 国产日产精品一区二区三区 | 香蕉短视频 | 天天操天天操天天操天天操天天操 | 午夜久久网 | 九色视频91 | 国产 欧美 自拍 | 精品国产18久久久久久 | 黄色av网站在线免费观看 | 一级黄色淫片 | 手机看片欧美日韩 | 午夜小福利 | 91社在线| 欧美国产一级片 | 久久午夜视频 | 日韩欧美一区二区三区在线 | 天天做天天爱天天爽综合网 | 爱爱网入口 | 日日夜夜一区二区 | 中国大陆高清aⅴ毛片 |