国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

令人頭疼的 arguments

lanffy / 3242人閱讀

摘要:以我的理解簡單非嚴(yán)格模式下,函數(shù)形參和綁定,二者無論誰修改,都會(huì)互相影響。嚴(yán)格模式下,參數(shù)的值不會(huì)隨對象的值的改變而變化。有意思的是在下,如果使用函數(shù)默認(rèn)值,也會(huì)出現(xiàn)類似嚴(yán)格模式的效果。原文首發(fā)于我的博客

下面這一題來自 javascript-puzzlers

function sidEffecting(ary) {
  ary[0] = ary[2]
}
function bar(a,b,c) {
  c = 10
  sidEffecting(arguments)
  return a + b + c
}
bar(1,1,1)

上述的結(jié)果是什么?答案是21,當(dāng)然這是非嚴(yán)格模式,如果嚴(yán)格模式,那么答案為12。

以我的理解簡單非嚴(yán)格模式下,函數(shù)形參和arguments綁定,二者無論誰修改,都會(huì)互相影響。

但是,嚴(yán)格模式下,任何在函數(shù)體內(nèi)的修改,或形參,或 arguments 只會(huì)影響自己,不會(huì)影響對方,可以修改下列代碼試一試。

function test(a, b, c) {
    // "use strict"
    var a = 4 
    console.log(a + b + c)
    // arguments[0] = 4
    console.log(arguments[0] + arguments[1] + arguments[2])
}

test(1,2,3)

嚴(yán)格模式下,參數(shù)的值不會(huì)隨 arguments 對象的值的改變而變化。在正常模式下,對于第一個(gè)參數(shù)是 arg 的函數(shù),對 arg 賦值時(shí)會(huì)同時(shí)賦值給 arguments[0],反之亦然(除非沒有參數(shù),或者 arguments[0] 被刪除)。嚴(yán)格模式下,函數(shù)的 arguments 對象會(huì)保存函數(shù)被調(diào)用時(shí)的原始參數(shù)。arguments[i] 的值不會(huì)隨與之相應(yīng)的參數(shù)的值的改變而變化,同名參數(shù)的值也不會(huì)隨與之相應(yīng)的 arguments[i] 的值的改變而變化。

有意思的是在ES6下,如果使用函數(shù)默認(rèn)值,也會(huì)出現(xiàn)類似嚴(yán)格模式的效果。

function test(a, b, c = 3) {
    var a = 4 
    console.log(a + b + c)
    // arguments[0] = 4
    console.log(arguments[0] + arguments[1] + arguments[2])
}

test(1,2,3)

花了半個(gè)小時(shí),發(fā)現(xiàn)自己以前對嚴(yán)格模式理解還有不足,以后這道題作為面試題還不錯(cuò)。

原文首發(fā)于我的github博客:https://github.com/isLishude/...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/88723.html

相關(guān)文章

  • element-ui日期時(shí)間選擇器日期格式化問題

    摘要:最近在做的后臺(tái)管理頁面,其中用到了來選擇日期時(shí)間,但是在將數(shù)據(jù)傳回后臺(tái)的過程中遇到了一些令人頭疼的問題,在此記錄一下解決方案,以免日后再次遇到。 最近在做vue+element-ui的后臺(tái)管理頁面,其中用到了DateTimePicker來選擇日期時(shí)間,但是在將數(shù)據(jù)傳回后臺(tái)的過程中遇到了一些令人頭疼的問題,在此記錄一下解決方案,以免日后再次遇到。 showImg(https://segm...

    atinosun 評(píng)論0 收藏0
  • 30分鐘掌握ES6/ES2015核心內(nèi)容

    摘要:以下簡稱是語言的下一代標(biāo)準(zhǔn)。因?yàn)楫?dāng)前版本的是在年發(fā)布的,所以又稱。用它所聲明的變量,只在命令所在的代碼塊內(nèi)有效。的繼承機(jī)制,實(shí)質(zhì)是先創(chuàng)造父類的實(shí)例對象所以必須先調(diào)用方法,然后再用子類的構(gòu)造函數(shù)修改。 ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標(biāo)準(zhǔn)。因?yàn)楫?dāng)前版本的ES6是在2015年發(fā)布的,所以又稱ECMAScript 2015。 也就是說,ES6就是E...

    LucasTwilight 評(píng)論0 收藏0
  • 30分鐘掌握ES6/ES2015核心內(nèi)容(上)

    摘要:以下簡稱是語言的下一代標(biāo)準(zhǔn)。的繼承機(jī)制,實(shí)質(zhì)是先創(chuàng)造父類的實(shí)例對象所以必須先調(diào)用方法,然后再用子類的構(gòu)造函數(shù)修改。總結(jié)以上就是最常用的一些語法,可以說這的語法,在的日常使用中占了追加十分鐘好的嗎分鐘掌握核心內(nèi)容下 ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標(biāo)準(zhǔn)。因?yàn)楫?dāng)前版本的ES6是在2015年發(fā)布的,所以又稱ECMAScript 2015。 也就是說...

    YPHP 評(píng)論0 收藏0
  • Javascript對象拷貝

    摘要:的對象只是指向內(nèi)存中某個(gè)位置的指針。所以在拷貝中的對象時(shí),要根據(jù)實(shí)際情況做一些考慮。結(jié)論中最好的對象拷貝的算法,很大程度上取決于其使用環(huán)境,以及你需要拷貝的對象類型。 翻譯:瘋狂的技術(shù)宅原文:https://smalldata.tech/blog/2... 本文首發(fā)微信公眾號(hào):前端先鋒歡迎關(guān)注,每天都給你推送新鮮的前端技術(shù)文章 在開始之前,我先普及一些基礎(chǔ)知識(shí)。Javascrip...

    simpleapples 評(píng)論0 收藏0
  • android高級(jí)工程師-閱讀源碼經(jīng)驗(yàn)總結(jié)

    摘要:對于一個(gè)有追求的程序員來說必須讀源碼,當(dāng)然閱讀源碼是一件令人頭疼的事。和差不多,想法一樣,但是和相比,搜索到的有價(jià)值結(jié)果不是很多,沒有的理想,還有一些來著百度知道。 對于一個(gè)有追求的程序員來說必須讀源碼,當(dāng)然閱讀源碼是一件令人頭疼的事。閱讀別人的代碼遠(yuǎn)比自己寫代碼要難。Linus 是Linux的早期作者,一句影響深遠(yuǎn)的話是Read The Fucking Source Code(RTF...

    idisfkj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<