摘要:在中我們通常使用來檢測變量的類型但是在一些復雜情況下就顯得力不從心了下面我們來說說和使用這三個進行類型的檢測檢測中的基本類型還是可以的對于和就比較特殊了對于函數數組對于下面的檢測就比較混亂了該函數用來查看對象的構造函數這里需要注意的是對于和
在javascript中我們通常使用typeof()來檢測變量的類型,但是在一些復雜情況下typeof()就顯得力不從心了,下面我們來說說typeof,constructor和toString,使用這三個進行類型的檢測.
typeoftypeof檢測js中的基本類型還是可以的.
var num = 1; typeof(num) // number var str = "hello"; typeof(str); // string var bool = true; typeof(bool); // boolean
對于undefined和null就比較特殊了,
typeof(undefined); // undefined typeof(null); // object
對于函數、數組
function a(){}; typeof(a); // function var arr = []; typeof(arr); // object
對于下面的檢測就比較混亂了:
typeof new Boolean(true) === "object"; typeof new Number(1) ==== "object"; typeof new String("abc") === "object"; typeof new Date() === "object";constructor
該函數用來查看對象的構造函數
var bool = true; console.log(bool.constructor == Boolean);// true var num = 1; console.log(num.constructor == Number); // true var str = "hello"; console.log(str.constructor == String); // true
這里需要注意的是:
對于 undefined 和 null ,不能夠使用 construcor檢測.
使用toString檢測,必須使用Object.prototype.toString(),
先來看看這個東東輸出什么鬼:
console.log(Object.prototype.toString()); // [object Object]
那么如何使用toString()來進行檢測呢?這里使用 call()來改變this的指向,
var bool = true; console.log(Object.prototype.toString.call(bool)); // [object Boolean] var num = 1; console.log(Object.prototype.toString.call(num)); // [object Number] var str = "hello"; console.log(Object.prototype.toString.call(str)); // [object String] var arr = []; console.log(Object.prototype.toString.call(arr)); // [object Array] var a = undefined; console.log(Object.prototype.toString.call(a)); // [object Undefined] var b = null; console.log(Object.prototype.toString.call(b)); // [object Null]
可以看出 使用Object.prototype.toString.call()來檢測 是比較完美的.推薦使用.
補充 instanceof檢測某個實例是否在某個對象的原型鏈上 原型鏈__proto__,
var c = []; console.log(c instanceof Object); //true var d = 123; // 這些 普通類型 并不是對象 console.log(d instanceof Object); //false var str = "hello"; // 不是對象 console.log(str instanceof Object); //false var num = new Number(123); console.log(num instanceof Object);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78781.html
摘要:正文一基本類型檢測為什么說是基本類型檢測對于這三種類型經常用到的基本類型檢測是正確的。為什么說是更好的檢測方法上面的兩種方法要么是只能檢測基本類型,要么是只能檢測引用類型,還存在不支持檢測的情況。 前言 前兩篇文章主要是一直在討論JS類型的轉換,那么怎么才能檢測JS的數據類型呢?檢測數據類型在工程中經常用到,常見的JS類型檢測有三種方法: 1. typeof 2. instanceof...
摘要:基本類型和類型檢測類型基本類型,,,,,類型檢測在開發中難免會遇到類型檢測,以下就是常用一些方法可以檢測基本類型蛋蛋君但是使用檢測的時候會返回。 JS基本類型和類型檢測 類型 基本類型:string,number,null,undefined,boolean,object 類型檢測 在開發中難免會遇到類型檢測,以下就是常用一些方法 typeof: typeof可以檢測基本類型 typ...
摘要:運算符可以用來檢測某個構造函數的屬性是否存在于另外一個要檢測對象的原型鏈上。使用方法可以獲取到變量的準確的數據類型就能解決基本包裝類型的檢測錯誤和的檢測不安全。 本文共 1750 字,讀完只需 7 分鐘 數據類型有哪些? ECMAScript 的數據類型分為簡單數據類型(也被稱為基本數據類型,原始數據類型): Undefined Null String Number Boolean ...
摘要:中檢測數據類型的四種方法前言先說一下中的數據類型有哪幾類主要分類兩大類型,基本類型和引用類型。用法結果這樣一看,似乎能滿足的所有數據類型,那我們看下繼承之后是否能檢測出來結果小結可以看出,可用于檢測所有的數據類型。 js中檢測數據類型的四種方法 前言 先說一下JavaScript中的數據類型有哪幾類?主要分類兩大類型,基本類型和引用類型。 showImg(https://segment...
摘要:中常常會看到這種代碼變量與的比較這種用法很有問題用來判斷變量是否被賦予了一個合理的值比如不好的寫法執行一些邏輯這段代碼中方法顯然是希望是一個數組因為我們看到的擁有和這段代碼的意圖非常明顯如果參數不是一個數組則停止接下來的操作這種寫法的問題在 js中, 常常會看到這種代碼: 變量與null的比較(這種用法很有問題), 用來判斷變量是否被賦予了一個合理的值. 比如: const Contr...
摘要:話不多說,我們開干,加油干貨滿滿今天,我們一起學習一下中的數據類型檢測相關的知識,也順便做個總結。基本數據類型又包括,還有一個新增的,我們這先不說。 歡迎訪問我的個人博客:http://www.xiaolongwu.cn 前言 最近工作有點忙,好幾天都沒更新技術博客了。 周末起床打開有道云筆記,發現自己的博客todolist里躺了一堆只有名字的文件。 話不多說,我們開干,加油! 干貨滿...
閱讀 1711·2021-11-11 10:58
閱讀 4186·2021-09-09 09:33
閱讀 1257·2021-08-18 10:23
閱讀 1548·2019-08-30 15:52
閱讀 1625·2019-08-30 11:06
閱讀 1867·2019-08-29 14:03
閱讀 1507·2019-08-26 14:06
閱讀 2943·2019-08-26 10:39