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

資訊專欄INFORMATION COLUMN

關(guān)于js高級(jí)程序設(shè)計(jì)第三版中關(guān)于arguments論述的一個(gè)錯(cuò)誤

spademan / 2007人閱讀

摘要:我是這樣做的這兩個(gè)函數(shù),分別對(duì)和其對(duì)應(yīng)的傳參做出修改,并彈出結(jié)果。這和書中論述無(wú)異。然而在第二個(gè)函數(shù)中,將強(qiáng)行賦值為,輸出按照作者以上的論述斜體字部分,里的值應(yīng)該保持不變,結(jié)果應(yīng)該為才對(duì)。此時(shí)的值始終為因此才會(huì)有輸出這一結(jié)果。

這本紅寶書相信大家很熟悉,甚至比我讀過(guò)的次數(shù)要多,不過(guò)今天在閱讀函數(shù)傳參部分章節(jié)時(shí),發(fā)現(xiàn)了書中一個(gè)可以算是小錯(cuò)誤的知識(shí)點(diǎn)。

我們知道,arguments作為一個(gè)類數(shù)組,和函數(shù)的傳參是一一對(duì)應(yīng)的,那么如果改變其中一個(gè)的值,會(huì)對(duì)另一個(gè)有什么影響呢?

在紅寶書第66頁(yè)第一段,作者給予了論述:

   function doAdd(num1,num2){
    arguments[1]=10;
    alert(arguments[0]+num2)
   }

“每次執(zhí)行這個(gè)doAdd()函數(shù)都會(huì)重寫第二個(gè)參數(shù),將第二個(gè)參數(shù)的值修改為10。因?yàn)閍rguments對(duì)象中的值會(huì)自動(dòng)反映到對(duì)應(yīng)的命名參數(shù),所以修改arguments[1],也就修改了num2,結(jié)果它們的值都會(huì)變成10。不過(guò),這并不是說(shuō)讀取這兩個(gè)值會(huì)訪問(wèn)相同的內(nèi)存空間;它們的內(nèi)存空間是獨(dú)立的,但它們的值會(huì)同步。但這種影響是單向的:修改命名參數(shù)不會(huì)改變argument中對(duì)應(yīng)的值

這段解讀非常深刻,于是我趕快打開編輯器進(jìn)行嘗試。我是這樣做的:

function add1(num1,num2){
    arguments[1]=10;
    alert(num1+num2);
}
function add2(num1,num2){
    num2=10;
    alert(arguments[0]+arguments[1]);
}
add1(20,5);
add2(3,5);
add1(20);

這兩個(gè)函數(shù),分別對(duì)arguments[1]和其對(duì)應(yīng)的傳參num2做出修改,并彈出結(jié)果。在第一個(gè)函數(shù)中,因?yàn)榻oarguments[1]賦值這個(gè)動(dòng)作將num2的值強(qiáng)行替換為10,所以在調(diào)用add1(20,5)時(shí),我們得到的是num1+num2=20+10=30。這和書中論述無(wú)異。
然而在第二個(gè)函數(shù)add2中,將num2強(qiáng)行賦值為10,輸出arguments[0]+arguments[1],按照作者以上的論述(斜體字部分),argument里的值應(yīng)該保持不變,結(jié)果應(yīng)該為3+5=8才對(duì)。但是瀏覽器結(jié)果最后給出的結(jié)果為13(3+10),在火狐、谷歌和IE下結(jié)果一致。這說(shuō)明,改變傳參的值,同樣可以反過(guò)來(lái)改變對(duì)應(yīng)arguments的值,兩者的改變是相通的。

另外,如果只給add1傳入一個(gè)參數(shù),瀏覽器最后給出的結(jié)果為NaN,這說(shuō)明:如果只傳了一個(gè)值,那么為arguments[1]設(shè)置的值不會(huì)反應(yīng)到命名參數(shù)中去,因?yàn)閍rguments對(duì)象的長(zhǎng)度是由傳入的參數(shù)個(gè)數(shù)決定的。此時(shí)num2的值始終為undefined,因此才會(huì)有輸出NaN這一結(jié)果。

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

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

相關(guān)文章

  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁(yè)面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...

    happen 評(píng)論0 收藏0
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁(yè)面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...

    余學(xué)文 評(píng)論0 收藏0
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁(yè)面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...

    Jochen 評(píng)論0 收藏0
  • 《Javascript高級(jí)程序設(shè)計(jì) (三版)》第五章 引用類型

    摘要:類型沒有重載聲明了兩個(gè)同名函數(shù),而結(jié)果則是后面的函數(shù)覆蓋了前面的函數(shù)。引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對(duì)象函數(shù)屬性和方法表示函數(shù)希望接收的命名參數(shù)的個(gè)數(shù)。而自動(dòng)創(chuàng)建的基本包裝類型的對(duì)象,則只存在于一行代碼的執(zhí)行瞬間,然后立即被銷毀。 Function類型 沒有重載 聲明了兩個(gè)同名函數(shù),而結(jié)果則是后面的函數(shù)覆蓋了前面的函數(shù)。 var addSomeNumber = function (num)...

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

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

0條評(píng)論

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