欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript數(shù)組的一些奇葩行為

 更新時間:2016年01月25日 11:12:17   作者:宇哥哥  
今天,復習了一下JavaScript的數(shù)組,然后,把他的一些奇葩行為總結(jié)了一下,分享在腳本之家平臺,歡迎大家參考

在程序語言中數(shù)組的重要性不言而喻,JavaScript中數(shù)組也是最常使用的對象之一,數(shù)組是值的有序集合,由于弱類型的原因,JavaScript中數(shù)組十分靈活、強大,不像是Java等強類型高級語言數(shù)組只能存放同一類型或其子類型元素,JavaScript在同一個數(shù)組中可以存放多種類型的元素,而且是長度也是可以動態(tài)調(diào)整的,可以隨著數(shù)據(jù)增加或減少自動對數(shù)組長度做更改。

今天,復習了一下JavaScript的數(shù)組,然后,把他的一些奇葩行為總結(jié)了一下,在這里和大家share一下,如果有不對的地方,歡迎指出!

奇葩1:Array()構(gòu)造器函數(shù)可以不使用new關(guān)鍵字進行調(diào)用:

Array()構(gòu)造器使用傳遞給他的參數(shù)作為數(shù)組的元素,從而創(chuàng)建數(shù)組,一般的,我們是如下調(diào)用的:

var a = new Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 

但是,省略掉new也是可以的,如下:

var a = Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 

雖然,我不知道他的內(nèi)部實現(xiàn)機制是什么,但是,猜想他的構(gòu)造器函數(shù)可能是如下定義的:

function Array(args) {
//如果,this不是Array的實例的話,
//說明不是通過new調(diào)用的,則在這里再重新調(diào)用
if( !this instanceof Array) {
return new Array(args);
}//后面是正常調(diào)用時的實現(xiàn)代碼
//...
}

奇葩2:當只傳一個參數(shù)給構(gòu)造函數(shù)時,行為莫測

如果只傳一個參數(shù),并且這個參數(shù)是一個整數(shù),將會得到一個數(shù)組,并且length等于這個參數(shù)

var a = new Array(12);
console.log(a.length); //12
console.log(a); //[] 

如果只傳一個浮點數(shù),就會報錯:

var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…) 

傳遞一個字符串就會正常工作,并且該字符串作為數(shù)組的第一個元素:

var a = new Array("1.1");
console.log(a.length); //
console.log(a); //["1.1"] 

但是為了避免二義性,我建議最好是是直接使用字面量的形式創(chuàng)建數(shù)組:

var a = []; //空數(shù)組
var a = [1, 1, "bom"]; //三個元素
var a = [12]; //一個元素,并且元素是12 

奇葩3:數(shù)組的length屬性可以被修改(可寫)

如下,我們直接把本來是2的length改成了100,而且還修改成功了!??!

var a = [1, 2, 3, 4];
console.log(a.length); //4
a.length = 100; 
console.log(a.length); //100 

雖然length等于100,但是,元素a[4]-a[99]是不存在的,并且如果你請求他們的值的話,例如,從0到a.length做一個循環(huán)中做的話,那么會得到undefined。

接下來再看:

var a = [1, 2, 3, 4];
a.length = 100;
console.log(a[10]); //undefined
console.log(99 in a); //false 

與下面的例子有點相似:

var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(a.length); //100 

不同之處在于,這里的a[99]存在了,因為我們創(chuàng)建了它,即使他擁有的是undefined的值。但是從a[4]到a[98]的所有元素則是不存在的,如下:

var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(99 in a); //true;
console.log(98 in a); //false
console.log(a.length); //100 

以上所述給大家分享了JavaScript數(shù)組的一些奇葩行為,文章寫的不好還請見諒,謝謝!

相關(guān)文章

  • uni-app配置APP自定義頂部標題欄設置方法與注意事項

    uni-app配置APP自定義頂部標題欄設置方法與注意事項

    相信很多小伙伴在使用uniapp進行多端開發(fā)的時候,在面對一些業(yè)務需求的時候,uniapp給我們提供的默認導航欄已經(jīng)不能滿足我們的業(yè)務需求了,這篇文章主要給大家介紹了關(guān)于uni-app配置APP自定義頂部標題欄設置方法與注意事項的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • JavaScript寫個貪吃蛇小游戲(超詳細)

    JavaScript寫個貪吃蛇小游戲(超詳細)

    這篇文章主要介紹了JavaScript寫個貪吃蛇小游戲(超詳細),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • javascript用戶注冊提示效果的簡單實例

    javascript用戶注冊提示效果的簡單實例

    這個可以增加用戶驗證,不用js alert來作提示,而是在右邊提示,現(xiàn)在很多網(wǎng)站都這樣做,有需要的朋友可以參考一下
    2013-08-08
  • 深入理解TypeScript 類型兼容性

    深入理解TypeScript 類型兼容性

    本文主要介紹了TypeScript 在函數(shù)、枚舉、類和泛型中的類型兼容性規(guī)則,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • 微信小程序?qū)崿F(xiàn)選擇內(nèi)容顯示對應內(nèi)容

    微信小程序?qū)崿F(xiàn)選擇內(nèi)容顯示對應內(nèi)容

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)選擇內(nèi)容顯示對應內(nèi)容,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • window.onresize 多次觸發(fā)的解決方法

    window.onresize 多次觸發(fā)的解決方法

    用了window.onresize但是發(fā)現(xiàn)每次 onresize 后頁面中狀態(tài)總是不對,下面與大家分享下onresize 事件多次觸發(fā)的解決方法
    2013-11-11
  • TS中declare的簡單使用方法

    TS中declare的簡單使用方法

    declare 關(guān)鍵字用來告訴編譯器,某個類型是存在的,可以在當前文件中使用,本文給大家介紹TS中declare的簡單使用方法,感興趣的朋友一起看看吧
    2023-12-12
  • 微信小程序?qū)崿F(xiàn)image組件圖片自適應寬度比例顯示的方法

    微信小程序?qū)崿F(xiàn)image組件圖片自適應寬度比例顯示的方法

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)image組件圖片自適應寬度比例顯示的方法,簡單講述了image組件的常用屬性,并結(jié)合實例形式分析了微信小程序?qū)崿F(xiàn)圖片自適應寬度比例的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • javascript Onunload與Onbeforeunload使用小結(jié)

    javascript Onunload與Onbeforeunload使用小結(jié)

    Onunload,onbeforeunload都是在刷新或關(guān)閉時調(diào)用,可以在<script>腳本中通過window.onunload來指定或者在<body>里指定。區(qū)別在于onbeforeunload在onunload之前執(zhí)行,它還可以阻止onunload的執(zhí)行。
    2009-12-12
  • js仿蘋果iwatch外觀的計時器代碼分享

    js仿蘋果iwatch外觀的計時器代碼分享

    這篇文章主要介紹了JS+CSS3實現(xiàn)的類似于蘋果iwatch計時器特效,很實用的代碼,推薦給大家,有需要的小伙伴可以參考下。
    2015-08-08

最新評論