亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

es6如何判斷一個變量是否為數組

發布時間:2023-01-28 14:10:18 來源:億速云 閱讀:117 作者:iii 欄目:web開發

這篇文章主要講解了“es6如何判斷一個變量是否為數組”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“es6如何判斷一個變量是否為數組”吧!

判斷方法:1、利用Array對象的isArray()函數來判斷變量是不是數組,語法“Array.isArray(obj)”,如果是數組返回true,否則返回false。2、通過“Object.prototype.toString()”來判斷,語法“Object.prototype.toString.apply(a) === '[object Array]'”。

在ES5中判斷變量是否為數組

在ES5中,我們至少有如下5種方式去判斷一個值是否數組:

var a = []; 
// 1.基于instanceof 
a instanceof Array; 
// 2.基于constructor 
a.constructor === Array; 
// 3.基于Object.prototype.isPrototypeOf 
Array.prototype.isPrototypeOf(a); 
// 4.基于getPrototypeOf 
Object.getPrototypeOf(a) === Array.prototype; 
// 5.基于Object.prototype.toString 
Object.prototype.toString.apply(a) === '[object Array]';

以上,除了Object.prototype.toString外,其它方法都不能正確判斷變量的類型。

要知道,代碼的運行環境十分復雜,一個變量可能使用渾身解數去迷惑它的創造者。且看:

var a = {
    __proto__: Array.prototype
}; 
// 分別在控制臺試運行以下代碼 
// 1.基于instanceof 
a instanceof Array; // => true 
// 2.基于constructor 
a.constructor === Array; // => true 
// 3.基于Object.prototype.isPrototypeOf 
Array.prototype.isPrototypeOf(a); // => true 
// 4.基于getPrototypeOf 
Object.getPrototypeOf(a) === Array.prototype; // => true

以上,4種方法將全部返回true,為什么呢?我們只是手動指定了某個對象的__proto__屬性為Array.prototype,便導致了該對象繼承了Array對象,這種毫不負責任的繼承方式,使得基于繼承的判斷方案瞬間土崩瓦解。

不僅如此,我們還知道,Array是堆數據,變量指向的只是它的引用地址,因此每個頁面的Array對象引用的地址都是不一樣的。iframe中聲明的數組,它的構造函數是iframe中的Array對象。如果在iframe聲明了一個數組x,將其賦值給父頁面的變量y,那么在父頁面使用y instanceof Array ,結果一定是false的。而最后一種返回的是字符串,不會存在引用問題。實際上,多頁面或系統之間的交互只有字符串能夠暢行無阻。

在ES6中判斷變量是否為數組

鑒于數組的常用性,在ES6中新增了Array.isArray方法,使用此方法判斷變量是否為數組,則非常簡單,如下:

Array.isArray([]); // => true 
Array.isArray({0: 'a', length: 1}); // => false

實際上,通過Object.prototype.toString去判斷一個值的類型,也是各大主流庫的標準。因此Array.isArray的polyfill通常長這樣:

if (!Array.isArray){ 
    Array.isArray = function(arg){ 
        return Object.prototype.toString.call(arg) === '[object Array]'; 
    }; 
}

感謝各位的閱讀,以上就是“es6如何判斷一個變量是否為數組”的內容了,經過本文的學習后,相信大家對es6如何判斷一個變量是否為數組這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

es6
AI

桐乡市| 临桂县| 洮南市| 寿宁县| 碌曲县| 巴彦淖尔市| 平舆县| 汶川县| 即墨市| 凌海市| 剑河县| 济南市| 云龙县| 大余县| 奉贤区| 金坛市| 宁明县| 古交市| 景德镇市| 肇东市| 陆良县| 朔州市| 崇文区| 蒙山县| 疏勒县| 灵石县| 溧水县| 竹溪县| 宁津县| 珠海市| 醴陵市| 黔西县| 东兰县| 金川县| 潮安县| 阳信县| 纳雍县| 章丘市| 涞水县| 洪雅县| 三门县|