最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript嵌套函數(shù)和在函數(shù)內(nèi)調(diào)用外部函數(shù)的區(qū)別分析

 更新時(shí)間:2016年01月31日 22:01:38   投稿:mdxy-dxy  
這篇文章主要介紹了javascript嵌套函數(shù)和在函數(shù)內(nèi)調(diào)用外部函數(shù)的區(qū)別,需要的朋友可以參考下

我們都知道在函數(shù)中定義的局部變量在聲明他的函數(shù)體以及其嵌套的函數(shù)內(nèi)始終是有定義的,并且在函數(shù)的作用域鏈上始終會(huì)有個(gè)對(duì)象指向全局對(duì)象,使函數(shù)能夠訪問(wèn)到全局變量。

var ga = 'global';
var func = function() {
  var la = 'local';
 return function() {
    return function()
    {
      return function()
      {
        alert(la);alert(ga);
      }
    }
 }

}
a = func();
a()()();// 彈出 local 和 global

那么在外部定義的函數(shù)A, 被函數(shù)B在函數(shù)體內(nèi)調(diào)用時(shí),A能訪問(wèn)到B中定義的局部變量嗎?答案是否定的,把上面的例子稍作修改如下

var ga = 'global';

function repeat() {
 alert(la);  
}
var func = function() {
  var la = 'local';
  alert(1);
  repeat();
  alert(2);
};

func();

上面的運(yùn)行結(jié)果是只彈出了1,在調(diào)用repeat的時(shí)候,因?yàn)樵L問(wèn)了未定義變量js解釋器就報(bào)錯(cuò)把程序中斷了。

原因是函數(shù)在定義時(shí)保存了一個(gè)作用域鏈,repeat函數(shù)在外部定義,在他的作用域中并沒(méi)有一個(gè)局部變量叫l(wèi)a,繼續(xù)在全局作用域查找也沒(méi)找到la所以就會(huì)報(bào)錯(cuò)。

所以嵌套函數(shù)和在函數(shù)內(nèi)嵌套調(diào)用外部函數(shù)還是有很大區(qū)別的。

昨天在回答一個(gè)問(wèn)題http://m.fzitv.net/article/78958.htm時(shí)引發(fā)的思考,雖然概念我明白,但是當(dāng)時(shí)一直想在函數(shù)內(nèi)部調(diào)用的repeat為什么訪問(wèn)不到調(diào)用他的函數(shù)的局部變量,今天又翻了下參考資料自己用代碼測(cè)試了一遍。希望這篇文章能幫助到有同樣困惑的朋友。

相關(guān)文章

  • 自適應(yīng)方案postcss-pxtorem使用步驟

    自適應(yīng)方案postcss-pxtorem使用步驟

    這篇文章主要介紹了如何使用postcss-pxtorem插件將px單位轉(zhuǎn)換為rem單位,包括安裝插件、創(chuàng)建配置文件和引入腳本的步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • uniapp開(kāi)發(fā)小程序的經(jīng)驗(yàn)總結(jié)

    uniapp開(kāi)發(fā)小程序的經(jīng)驗(yàn)總結(jié)

    這篇文章主要給大家介紹了關(guān)于uniapp開(kāi)發(fā)小程序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • JavaScript實(shí)現(xiàn)滑塊驗(yàn)證解鎖

    JavaScript實(shí)現(xiàn)滑塊驗(yàn)證解鎖

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)滑塊驗(yàn)證解鎖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 頁(yè)面載入結(jié)束自動(dòng)調(diào)用js函數(shù)示例

    頁(yè)面載入結(jié)束自動(dòng)調(diào)用js函數(shù)示例

    當(dāng)頁(yè)面加載完成后自動(dòng)調(diào)用預(yù)先編好的js函數(shù),在某些特殊情況下還是比較實(shí)用的,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下
    2013-09-09
  • JS 對(duì)java返回的json格式的數(shù)據(jù)處理方法

    JS 對(duì)java返回的json格式的數(shù)據(jù)處理方法

    下面小編就為大家?guī)?lái)一篇JS 對(duì)java返回的json格式的數(shù)據(jù)處理方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • JavaScript?split()方法定義及更多實(shí)例

    JavaScript?split()方法定義及更多實(shí)例

    這篇文章主要給大家介紹了關(guān)于JavaScript?split()方法定義及更多實(shí)例的相關(guān)資料,js里的split()方法大家都知道用于將字符串轉(zhuǎn)化為字符串?dāng)?shù)組,文中通過(guò)代碼實(shí)例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • js靜態(tài)方法與實(shí)例方法分析

    js靜態(tài)方法與實(shí)例方法分析

    js靜態(tài)方法與實(shí)例方法分析,需要的朋友可以參考下。
    2011-07-07
  • JS pushlet XMLAdapter適配器用法案例解析

    JS pushlet XMLAdapter適配器用法案例解析

    這篇文章主要介紹了JS pushlet XMLAdapter適配器用法案例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 基于RequireJS和JQuery的模塊化編程日常問(wèn)題解析

    基于RequireJS和JQuery的模塊化編程日常問(wèn)題解析

    本文是小編日常收集整理些有關(guān)RequireJS和JQuery的模塊化編程,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • 跟我學(xué)習(xí)javascript的循環(huán)

    跟我學(xué)習(xí)javascript的循環(huán)

    跟我學(xué)習(xí)javascript的循環(huán),本文不僅針對(duì)javascript循環(huán)進(jìn)行講解,還對(duì)prototype補(bǔ)充了幾點(diǎn)小tips,歡迎大家閱讀。
    2015-11-11

最新評(píng)論

邵东县| 谢通门县| 来安县| 武平县| 兴山县| 庄浪县| 隆子县| 桐乡市| 黔西县| 钟山县| 东乌| 洪湖市| 峨眉山市| 芦山县| 临城县| 忻州市| 深州市| 绥滨县| 嘉定区| 天津市| 班玛县| 巫溪县| 札达县| 洛扎县| 文成县| 博客| 张掖市| 志丹县| 台中市| 花莲市| 景宁| 湖口县| 浮山县| 潞城市| 渝中区| 辽宁省| 浦北县| 山东省| 枞阳县| 张家口市| 大荔县|