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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正确判断js数据类型 总结记录

發布時間:2023/12/2 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正确判断js数据类型 总结记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正確判斷js數據類型 總結記錄

判斷js中的數據類型有一下幾種方法:typeof、instanceof、 constructor、 prototype、 三方庫。

js六大數據類型

number: 數字,整數、浮點數等等, string: 單引號或者雙引號來說明, Boolean: 返回true和false,這兩個值不一定對應1和0 object: 對象,可以執行new操作符后跟要創建的對象類型的名稱來創建。 null: 只有一個值得數據類型,邏輯上講,null值表示一個空對象指針。 undefined:未定義,使用var聲明變量但未對其初始化時,變量的值就是undefined。

1、typeof

在實際的項目應用中,typeof只有兩個用途,就是檢測一個元素是否為undefined,或者是否為function。原因如下:
JavaScript Garden整理出來了如下表格

Value function typeof ------------------------------------- "foo" String string new String("foo") String object 1.2 Number number new Number(1.2) Number object true Boolean boolean new Boolean(true) Boolean object new Date() Date object new Error() Error object [1,2,3] Array object new Array(1, 2, 3) Array object new Function("") Function function /abc/g RegExp object new RegExp("meow") RegExp object {} Object object new Object() Object object

2、instanceof

var a = [1,2,3]; var b = new Date(); var c = function(){};alert(a instanceof Array) ---------------> true alert(b instanceof Date) alert(c instanceof Function) ------------> true alert(c instanceof function) ------------> false

3、constructor

var a = [1,2,3]; var b = new Date(); var c = function(){};alert(a.constructor === Array) ----------> true alert(b.constructor === Date) -----------> true alert(c.constructor === Function) -------> true

注:
? ? ? 使用instaceof和construcor,被判斷的引用類型(Object Array)必須是在當前頁面聲明的!比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個array,并將其賦值給父頁面的一個變量,這時判斷該變量,Array ==object.constructor;會返回false;
原因:
1、array屬于引用型數據,在傳遞過程中,僅僅是引用地址的傳遞。
2、每個頁面的Array原生對象所引用的地址是不一樣的,在子頁面聲明的array,所對應的構造函數,是子頁面的Array對象;父頁面來進行判斷,使用的Array并不等于子頁面的Array。

4、Object.prototype.toString(通用)

Object.prototype.toString.call() var toString = Object.prototype.toString;toString.call(undefined); -------------> [object Undefined] toString.call(null); -------------> [object Null] toString.call(new Date); -------------> [object Date] toString.call(new String); -------------> [object String] toString.call(Math); -------------> [object Math]

jQuery.type()源碼

var class2type = {} ; "Boolean Number String Function Array Date RegExp Object Error".split(" ").forEach(function(e,i){class2type[ "[object " e "]" ] = e.toLowerCase(); }) ;function _typeof(obj){if ( obj == null ){return String( obj );}return typeof obj === "object" || typeof obj === "function" ?class2type[ class2type.toString.call(obj) ] || "object" :typeof obj; }

注:數組還可以用 Array.isArray(); 或者根據其具有的方法去判斷。不再細述

原文地址:https://segmentfault.com/a/1190000016940601


更多專業前端知識,請上 【猿2048】www.mk2048.com

總結

以上是生活随笔為你收集整理的正确判断js数据类型 总结记录的全部內容,希望文章能夠幫你解決所遇到的問題。

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