javascript數(shù)組下標(biāo)從0開始。原因:1、從0開始,可以減少一次減法操作,減少CPU指令運算,可以提升CPU的效率;2、物理內(nèi)存的地址是從0開始的。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
javascript數(shù)組下標(biāo)是從0開始的。
那么為什么javascript數(shù)組下標(biāo)是從0開始的,而不是從1開始呢?
原因一:歷史原因
語言出現(xiàn)順序從早到晚C、Java、JavaScript。
C語言數(shù)組下標(biāo)是從0開始->Java也是->JavaScript也是。
降低額外的學(xué)習(xí)和理解成本。
原因二:減少CPU指令運算
(1)下標(biāo)從0開始:
數(shù)組尋址——arr[i] = base_address + i * type_size(1)
其中base_address為數(shù)組arr首地址,arr0就是偏移量為0的數(shù)組,即數(shù)組arr首地址;i為偏移量,type_size為數(shù)組類型字節(jié)數(shù),比如int為32位,即4個字節(jié)。
(2)下標(biāo)從1開始:
數(shù)組尋址——arr[i] = base_address + (i -1)* type_size(2)
比較兩個計算公式可以發(fā)現(xiàn)公式(2)每次CPU尋址需要多一次i-1的操作,即多了一次減法的指令運算。
對于數(shù)組這種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),無論在哪種高級程序語言中,都是頻繁間接(作為容器的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),比如Java的ArrayList)或者直接被使用的,因此要盡量減少其消耗CPU資源。從0開始,可以減少一次減法操作,提升了CPU的效率。
原因三:物理內(nèi)存的地址是從0開始的
計算機主存是多個連續(xù)字節(jié)大小的單元組成的數(shù)組,每個字節(jié)都對應(yīng)唯一的物理地址,第一個字節(jié)的地址為0。
【推薦學(xué)習(xí):javascript高級教程】