javascript中new Array()和var arr=[]用法區(qū)別
大家在學(xué)習(xí)javascript中對于數(shù)組函數(shù)new Array()和var arr=[]很多朋友不知道如何區(qū)別,也不知道用法,下面看看我們總結(jié)的。
var arr=[]
這是一種字面量定義數(shù)組的方法
var arr=new Array()
這是調(diào)用數(shù)組構(gòu)造函數(shù)生成的數(shù)組
上面的2種定義數(shù)組的方法到底一樣不一樣
目前我們大致的認(rèn)同是下面這樣的
用new 關(guān)鍵字去內(nèi)存開辟一個(gè)存儲地址比較耗資源,耗內(nèi)存.
而字面量方式直接在內(nèi)存開辟一個(gè)存儲字段相對簡單,不耗資源.
我們首先不去否定上面的結(jié)論對不對.
首先從功能上來說 var =arr=[] 和 var arr= new Array() 是一樣的.
然后我們用一段代碼來驗(yàn)證一下
var startTime=new Date().getTime(); var test1=[]; var test2=[]; for(var i=0;i<1000000;i++){ //test1[i]={}; test2[i]=new Object(); } var endTime=new Date().getTime(); console.log('輸出耗時(shí):',endTime-startTime);
上面 test1 和 test2 2個(gè)數(shù)組中每個(gè)元素都是一個(gè)數(shù)組,可以依次注釋任意一行代碼,我大概測試10多次以上
結(jié)果
36**
36**
上面的2個(gè)耗時(shí)都是 3600 秒左右,忽上忽下,沒有絲毫大的差距
我的運(yùn)行話就 MacBook Air (13-inch, Mid 2013) ,處理器:1.3 GHz Intel Core i5 , 內(nèi)存: 4 GB 1600 MHz DDR3 , JS Runner 工具
所以姑且認(rèn)為上面的2種方法差異不大.
[ ]和new Array()在語法上唯一的區(qū)別是new Array()可以直接設(shè)置數(shù)組的長度
new Array() 在構(gòu)造數(shù)組的時(shí)候有下面幾種方法
var arr = new Array();
var arr = new Array(8);
var arr = new Array("c", "d", “e”);
字面量方式
var d = ["111", "222", "333"];
所以在性能上這2個(gè)方法沒有太大差距,只是一種使用習(xí)慣,字面量更加直接了當(dāng).
退一步講,如果我用 var arr=[‘111','222','333']; 定義一個(gè)數(shù)組的時(shí)候,難道它沒有通過構(gòu)造函數(shù)在內(nèi)存中開辟一個(gè)存放地址嗎?
js中數(shù)組Array的一些常用方法總結(jié)
var list = new Array()是我們在js中常常寫到的代碼,今天就總結(jié)哈Array的對象具有哪些方法。
list[0] = 0;
list[1] = 1;
list[2] = 2;
或者這樣聲明:var list = [0,1,2]
1 shift()t:刪除數(shù)組的第一個(gè)元素,返回刪除的值。這里是0
2 unshift(3,4):把參數(shù)加載數(shù)組的前面,返回?cái)?shù)組的長度?,F(xiàn)在list:中是3,4,0,1,2
3pop():刪除數(shù)組的最后一個(gè)元素,返回刪除的值。這里是2.
4push(3):將參數(shù)加載到數(shù)組的最后,返回?cái)?shù)組的長度,現(xiàn)在List中時(shí):0,1,2,3
5concat(3,4):把兩個(gè)數(shù)組拼接起來。
6splice(start,deleteCount,val1,val2,...):從start位置開始刪除deleteCount項(xiàng),并從該位置起插入val1,val2,...
reverse:將數(shù)組反序
var a = [1,2,3,4,5];
var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]
sort(orderfunction):按指定的參數(shù)對數(shù)組進(jìn)行排序
var a = [1,2,3,4,5];
var b = a.sort(); //a:[1,2,3,4,5] b:[1,2,3,4,5]
slice(start,end):返回從原數(shù)組中指定開始下標(biāo)到結(jié)束下標(biāo)之間的項(xiàng)組成的新數(shù)組
var a = [1,2,3,4,5];
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]
join(separator):將數(shù)組的元素組起一個(gè)字符串,以separator為分隔符,省略的話則用默認(rèn)用逗號為分隔符
var a = [1,2,3,4,5];
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"
相關(guān)文章
JavaScript計(jì)算器網(wǎng)頁版實(shí)現(xiàn)代碼分享
這篇文章主要為大家詳細(xì)介紹了JavaScript計(jì)算器網(wǎng)頁版實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07javascript生成不重復(fù)的隨機(jī)數(shù)
這篇文章主要介紹了javascript在指定范圍內(nèi)生成不重復(fù)的隨機(jī)數(shù)的方法和相關(guān)實(shí)例,有需要的小伙伴可以參考下。2015-07-07JavaScript實(shí)現(xiàn)六種網(wǎng)頁圖片輪播效果詳解
在網(wǎng)頁中,我們經(jīng)常會看到各種輪播圖的效果,它們到底是怎樣實(shí)現(xiàn)的呢?本文將為大家詳細(xì)介紹一下六種不同的輪播效果的實(shí)現(xiàn),需要的可以參考一下2021-12-12微信小程序創(chuàng)建自定義全局函數(shù)以及其調(diào)用方法詳解
微信小程序有時(shí)需要函數(shù)里面調(diào)用函數(shù),下面這篇文章主要給大家介紹了關(guān)于微信小程序創(chuàng)建自定義全局函數(shù)以及其調(diào)用方法的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09javascript判斷兩個(gè)IP地址是否在同一個(gè)網(wǎng)段的實(shí)現(xiàn)思路
要判斷兩個(gè)IP地址是否在同一個(gè)網(wǎng)段,將它們的IP地址分別與子網(wǎng)掩碼做與運(yùn)算,得到的結(jié)果為網(wǎng)絡(luò)號,具體實(shí)現(xiàn)如下,需要的朋友可以參考下2013-12-12小程序?qū)崿F(xiàn)列表多個(gè)批量倒計(jì)時(shí)
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)列表多個(gè)批量倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02JavaScript中發(fā)布/訂閱模式的簡單實(shí)例
這篇文章主要介紹了JavaScript中發(fā)布/訂閱模式的簡單實(shí)例,本文給出了一個(gè)簡單易懂的實(shí)現(xiàn)代碼,比較容易理解,需要的朋友可以參考下2014-11-11