亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

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

JavaScript的作用域鏈是在函數(shù)定義時確定還是在調(diào)用時?

瀏覽:108日期:2023-04-01 14:03:35

問題描述

看到如下的一個閉包問題

var x=10;function fn() { console.log(x);}function show(f) { var x=20; (function() {f(); })();}show(fn);

打印的是10而不是20,x在取值時不是沿著作用域鏈向上尋找嗎,如果作用域鏈是在函數(shù)創(chuàng)建時確定結(jié)果就是10,如果是在調(diào)用時確定就應該是20,有沒有關(guān)于作用域鏈準確的說法?這里準確的作用域鏈應該是什么樣的?fn和show處于同一級還是fn在show內(nèi)?

問題解答

回答1:

作用域鏈是在函數(shù)定義的時候確定的.

在函數(shù)內(nèi)定義的變量不能在函數(shù)之外的任何地方訪問,因為變量僅僅在該函數(shù)的域的內(nèi)部有定義。相對應的,一個函數(shù)可以訪問定義在其范圍內(nèi)的任何變量和函數(shù)。換言之,定義在全局域中的函數(shù)可以訪問所有定義在全局域中的變量。在另一個函數(shù)中定義的函數(shù)也可以訪問在其父函數(shù)中定義的所有變量和父函數(shù)有權(quán)訪問的任何其他變量。

https://developer.mozilla.org...

回答2:

作用域鏈是動態(tài)的,所以,在調(diào)用時確定。但是你的這個代碼中,閉包定義的function()是綁定的最外層的作用域function所申明的函數(shù)默認是綁定的外層的作用域

(我也是在學習中。。。)

回答3:

在函數(shù)創(chuàng)建的時候創(chuàng)建一個包含全局變量對象的作用域鏈,儲存在內(nèi)部[[Scope]]屬性中。函數(shù)執(zhí)行的時候會創(chuàng)建一個執(zhí)行環(huán)境,通過復制[[Scope]]屬性中的對象,構(gòu)建執(zhí)行環(huán)境的作用域鏈,并把自己的活動對象推入該作用域鏈的前端以此形成完整的作用域鏈。[[Scope]]保存的是對全局變量的引用,而不是值的復制。

var a = 10;function f(){ console.log(a);};function foo(){ a = 20; f();};foo() // 20;回答4:

閉包的調(diào)用方式和下面效果等價的,下面舉得例子通過對比說明了,作用域鏈是和函數(shù)定義時位置相關(guān)的。

var x=10;function fn(){ console.log(x);}function show() { var x=20; fn();}show(); //輸出10-----------------------var x=10;function show() { var x=20; function fn(){console.log(x); } fn();}show(); //輸出20

相關(guān)問題鏈接補充。/q/10...。有關(guān)于作用域鏈的討論。

回答5:

非嚴格模式任何IIFE的this指向都是window

以上文不對題。。。

標簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲视频播放 | 在线观看中文字幕亚洲 | 高清一级毛片 | 久久频这里精品99香蕉久 | 亚洲国产精品日韩在线观看 | 日韩欧美在线看 | 13一14周岁毛片免费 | 欧美三级做爰在线 | 日本精品高清一区二区不卡 | 久久精品呦女 | 在线99| a久久99精品久久久久久不 | 波多野结衣一区在线 | 91国内精品久久久久怡红院 | 99国产精品九九视频免费看 | 成人在线免费 | 亚洲成人高清在线 | 在线观看精品视频网站www | 国产美女视频黄a视频全免费网站 | 91久久福利国产成人精品 | 免看一级a毛片一片成人不卡 | 大黄一级片 | 国产成人综合95精品视频免费 | 中文字幕免费在线视频 | 国产一区二区福利久久 | 久久精品亚洲 | 欧美在线观看高清一二三区 | 精品少妇一区二区三区视频 | 97精品国产91久久久久久 | 中文字幕国产欧美 | 亚洲视频国产视频 | 亚洲欧美日韩国产专区一区 | 久久亚洲综合中文字幕 | 玖玖在线免费视频 | 美女超爽久久久久网站 | 日韩在线视频免费不卡一区 | 天干夜天天夜天干天ww | 日韩1页| 久久亚洲精品中文字幕 | 亚洲精品一区二区三区第四页 | 毛片手机在线视频免费观看 |