摘要:正確判斷數據類型總結記錄判斷中的數據類型有一下幾種方法三方庫。只有一個值得數據類型,邏輯上講,值表示一個空對象指針。
正確判斷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 object2、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) ------------> false3、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。
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(); 或者根據其具有的方法去判斷。不再細述
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99077.html
摘要:前端知識點總結高級持續更新中字符串什么是連續存儲多個字符的字符數組相同下標遍歷選取不同類型不同不通用所有字符串都無權修改原字符串,總是返回新字符串大小寫轉換統一轉大寫統一轉小寫何時不區分大小寫時,都需要先轉為一致的大小寫,再比較。 前端知識點總結——JS高級(持續更新中) 1.字符串 什么是: 連續存儲多個字符的字符數組 相同: 1. 下標 2. .length 3. 遍歷 4....
摘要:需要對每個用戶的每個內容對象維護一個數據結構。并沒有直接和相連,所以是將數據由暫存的內存中取出。采用實現的可用進行數據提交。記錄的完成情況,包括未嘗試未學習未完成,已完成。 簡介 SCORM定義了一個網絡化學習的內容聚合模型(Content Aggregaion Model)和學習對象的實時運行環境(Run-time Environment)。簡單說,它是為了滿足對網絡化學習內容的高水...
摘要:在近期看到了函數式編程這本書預售的時候就定了下來。主要目的是個人目前還是不理解什么是函數式編程。且和現在在學習函數式編程有莫大的關系。加速大概了解了函數式編程之后。總結看完了第一章也是可以小結一下的函數式編程。 本文章記錄本人在學習 函數式 中理解到的一些東西,加深記憶和并且整理記錄下來,方便之后的復習。 在近期看到了《JavaScript函數式編程》這本書預售的時候就定了下...
摘要:最常見的判斷方法它的官方解釋操作符返回一個字符串,表示未經計算的操作數的類型。另外,是判斷對象是否屬于某一類型,而不是獲取的對象的類型。多個窗口意味著多個全局環境,不同的全局環境擁有不同的全局對象,從而擁有不同的內置類型構造函數。 js中的數據類型 js中只有六種原始數據類型和一個Object: Boolean Null Undefined Number String Symbol ...
摘要:接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。隨著案例和執行結果的不斷積累,接口測試覆蓋會更加充分,統計結果會更加精確。 原文出自【聽云技術博客】:http://blog.tingyun.com/web/a... 今年遇到了幾個問題,與接口的功能和性能相關,恰巧最近公司也在組織以冒煙測試為主題的活動,于是乎突發奇想,尋思著能否將接口測試與冒煙測試結合起來,發掘一...
閱讀 3486·2021-11-18 10:07
閱讀 1586·2021-11-04 16:08
閱讀 1502·2021-11-02 14:43
閱讀 1083·2021-10-09 09:59
閱讀 837·2021-09-08 10:43
閱讀 1073·2021-09-07 09:59
閱讀 954·2019-12-27 11:56
閱讀 994·2019-08-30 15:56