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

es6函數(shù)中的作用域?qū)嵗治?/h1>
 更新時間:2020年04月18日 10:39:36   作者:wangliang_001  
這篇文章主要介紹了es6函數(shù)中的作用域,結(jié)合實例形式分析了es6函數(shù)作用域相關(guān)原理、用法與操作注意事項,需要的朋友可以參考下

本文實例講述了es6函數(shù)中的作用域。分享給大家供大家參考,具體如下:

一旦設(shè)置了參數(shù)的默認值,函數(shù)進行聲明初始化時,參數(shù)會形成一個單獨的作用域(context)。等到初始化結(jié)束,這個作用域就會消失。這種語法行為,在不設(shè)置參數(shù)默認值,是不會出現(xiàn)的。

var x = 1;

function f(x, y = x) {
 console.log(y);
}

f(2) // 2

上面的代碼中,參數(shù)y的默認值等于變量x。調(diào)用函數(shù)f時,參數(shù)形成一個單獨的作用域。在這個作用域里面,默認值變量x指向第一個參數(shù)x,而不是全局變量x,所以輸出是2。

再看下面的例子。

let x = 1;

function f(y = x) {
 let x = 2; 
 console.log(y)
}

上面代碼中,函數(shù)f調(diào)用時,參數(shù)y = x形成一個單獨的作用域,這個作用域里面,變量x本身沒有定義,所以指向外層的全局變量x。函數(shù)調(diào)用時,函數(shù)體內(nèi)部的局部變量x影響不到默認值變量x。

如果此時,全局變量x不存在,就會報錯。

function f(y = x) {
 let x = 2;
 console.log(y)
}

f() // ReferenceError: x is not defined

下面這樣寫,也會報錯。

var x = 1;

function foo(x = x) {
 // ...
}

foo() // ReferenceError: x is not defined

上面代碼中,參數(shù)x = x形成一個單獨作用域,實際執(zhí)行的是 let x = x,由于暫時性死區(qū)的原因,這行代碼會報錯"x未定義"。

如果參數(shù)的默認值是一個函數(shù),該函數(shù)的作用域也遵守這個規(guī)則。請看下面的例子。

let foo = 'outer'

function bar(func = () => foo) {
 let foo = 'inner';
 console.log(func())
}

bar() // outer

上面代碼中,函數(shù)bar的參數(shù)func的默認值是一個匿名函數(shù),返回值是變量foo。函數(shù)參數(shù)形成的單獨的作用域里面,并沒有定義變量foo,所以foo指向外層的全局變量foo,因此輸出outer。

如果寫成下面這樣,就會報錯。

function bar (func = () => foo) {
 let foo = 'inner'
 console.log(func())
}

bar() // ReferenceError: foo is not defined

上面代碼中,匿名函數(shù)里面的foo指向函數(shù)外層,但是函數(shù)外層并沒有聲明變量foo,所以報錯了。

下面是一個更復雜的例子。

var x = 1;
function foo(x, y = function() {x = 2;}) {
 var x = 3;
 y()
 console.log(x)
}

foo() // 3
x // 1

上面代碼中,函數(shù)foo的參數(shù)形成一個單獨作用域。這個作用域里面,首先聲明了變量x,然后聲明了變量y,y的默認值是一個匿名函數(shù)。這個匿名函數(shù)內(nèi)部的變量x, 指向同一個作用域的第一個參數(shù)x。函數(shù)foo內(nèi)部又聲明了一個內(nèi)部變量。該變量與第一個參數(shù)x由于不是同一個作用域,所以不是同一個變量,因此執(zhí)行y后,內(nèi)部變量x和外部全局變量x的值都沒變。

如果將var x = 3的var 去除,函數(shù)foo的內(nèi)部變量x就指向第一個參數(shù),與匿名函數(shù)內(nèi)部的x是一致的,所以最后輸出的就是2,而外層的全局變量x依然不受影響。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • JavaScript實現(xiàn)動態(tài)網(wǎng)頁時鐘

    JavaScript實現(xiàn)動態(tài)網(wǎng)頁時鐘

    這篇文章主要介紹了JavaScript實現(xiàn)動態(tài)網(wǎng)頁時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • js解決url傳遞中文參數(shù)亂碼問題的方法詳解

    js解決url傳遞中文參數(shù)亂碼問題的方法詳解

    前后臺用js傳參過程中,如果是中文就容易出現(xiàn)亂碼,下面這篇文章主要給大家介紹了關(guān)于js解決url傳遞中文參數(shù)亂碼問題的的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 通過正則格式化url查詢字符串實現(xiàn)代碼

    通過正則格式化url查詢字符串實現(xiàn)代碼

    看到項目里通過js數(shù)組split方法格式化查詢字符串的,突發(fā)奇想為什么不能用正則呢,性能如何?感興趣的朋友可以研究下哦
    2012-12-12
  • JS身份證信息驗證正則表達式

    JS身份證信息驗證正則表達式

    很多時候我們都是通過一組正則表達式來判斷用戶輸入的身份證是否合法,那在用正則表達式判斷之前,首先要做到的是對身份證信息的一些效驗規(guī)則
    2017-06-06
  • 老生常談?wù)谡謱?滾動條的問題

    老生常談?wù)谡謱?滾動條的問題

    小編遇到的問題是在彈出層后面的 遮罩層,因為有滾動條,導致滾動條下面不可視區(qū)域沒有遮罩層。下面就為大家介紹一下解決方法
    2016-04-04
  • bootstrap日期控件問題(雙日期、清空等問題解決)

    bootstrap日期控件問題(雙日期、清空等問題解決)

    這篇文章主要介紹了bootstrap日期控件(雙日期、清空等問題解決)相關(guān)知識,需要的朋友可以參考下
    2017-04-04
  • js css+html實現(xiàn)簡單的日歷

    js css+html實現(xiàn)簡單的日歷

    這篇文章主要為大家詳細介紹了由html、css、javascript結(jié)合實現(xiàn)的簡單日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • layui點擊導航欄刷新tab頁的示例代碼

    layui點擊導航欄刷新tab頁的示例代碼

    今天小編就為大家分享一篇layui點擊導航欄刷新tab頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • JavaScript腳本延遲加載有哪些方式

    JavaScript腳本延遲加載有哪些方式

    本文主要介紹了JavaScript腳本延遲加載有哪些方式,主要介紹了五種方式,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • JS獲取子、父、兄節(jié)點方法小結(jié)

    JS獲取子、父、兄節(jié)點方法小結(jié)

    這篇文章主要介紹了JS獲取子、父、兄節(jié)點方法總結(jié)及JS獲取兄弟節(jié)點的兩種方法,需要的朋友可以參考下
    2017-08-08

最新評論

东兰县| 班戈县| 巴林左旗| 临沭县| 贵州省| 萍乡市| 临颍县| 芜湖县| 陵川县| 上饶县| 石城县| 阳新县| 神木县| 遂川县| 汉阴县| 滨州市| 临颍县| 蒙山县| 信丰县| 宜城市| 开江县| 仁怀市| 哈密市| 茌平县| 从江县| 祥云县| 迭部县| 彭泽县| 婺源县| 溆浦县| 沈丘县| 长葛市| 海淀区| 克东县| 抚顺市| 长子县| 和硕县| 贺兰县| 绥滨县| 海兴县| 和硕县|