日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript 判断变量是否为数组Array的方法

發布時間:2023/12/19 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript 判断变量是否为数组Array的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 不能用typeof ,因為typeof?只能判斷基本類型,不能判斷引用類型

  var?ary = [1,23,4];   console.log(typeof?ary);?//輸出結果是Object

  上面的辦法并不能實時的檢測出是否是數組,只能判斷其類型,所以說typeof判斷基本類型數據還是挺好的,但是不能準確測試出是否是數組

2.instanceof 判斷  

  var?ary = [1,23,4];   console.log(ary?instanceof?Array)//true;

  能準確的檢測出數據類型是否是數組,但是有缺點。如下解釋

3.原型鏈方法

  var?ary = [1,23,4];   console.log(ary.__proto__.constructor == Array);//true   console.log(ary.constructor == Array)//true 這兩段代碼是一樣的

  這個辦法利用了原型鏈的方法,但是,這個是有兼容的哦,在IE早期版本里面__proto__是沒有定義的哦~而且,這個仍然有局限性。

?

  我們現在就來總結一下第2種方法和第3種方法局限性。
  instanceof 和constructor 判斷的變量,必須在當前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個ary1,并將其賦值給父頁面的一個變量 ary2,

  這時判斷該變量,Array == ary2.constructor;會返回false;

  原因:

  1、array屬于引用型數據,在傳遞過程中,僅僅是引用地址的傳遞。

  2、每個頁面的Array原生對象所引用的地址是不一樣的,在子頁面聲明的array,所對應的構造函數,是子頁面的Array對象;父頁面來進行判斷,使用的Array并不等于子頁面的Array;切記,不然很難跟蹤問題!

4. 通用的方法

  var?ary = [1,23,4];   function?isArray(o){     return?Object.prototype.toString.call(o) ==?'[object Array]';   }   console.log(isArray(ary)); 5 好用的判斷類型的方式(高階函數的應用)

function isType(type){
  return function(o){
    return Object.prototype.toString.call(o) === "[object " + type + "]";
  }
}
var isArray = isType("Array");
var a = [1,2,34];
console.log(isArray(a))

轉載于:https://www.cnblogs.com/FineDay/articles/6688846.html

總結

以上是生活随笔為你收集整理的JavaScript 判断变量是否为数组Array的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。