国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何判斷JavaScript的數據類型?

jackzou / 988人閱讀

摘要:本文將講解我目前所知道的判斷數據類型的方法。數據類型一共有種除了之外的種屬于原始數據類型。等價于問題四的返回值是什么答案。

本文將講解我目前所知道的判斷JavaScript數據類型的方法。
JavaScript數據類型一共有7種:

Undefined

Null

Boolean

String

Symbol

Number

Object

除了Object之外的6種屬于原始數據類型。有時,我們還會細分Object的類型,比如ArrayFunctionDateRegExp等。

typeof

typeof可以用來區分除了Null類型以外的原始數據類型對象類型的可以從普通對象里面識別出函數

typeof undefined // "undefined"
typeof null // "object"
typeof 1 // "number"
typeof "1" // "string"
typeof Symbol() // "symbol"
typeof function() {} // "function"
typeof {} // "object"

問題一:typeof不能識別null,如何識別null
答案:如果想要判斷是否為null,可以直接使用===全等運算符來判斷(或者使用下面的Object.prototype.toString方法):

let a = null
a === null // true

問題二:typeof作用于未定義的變量,會報錯嗎?
答案:不會報錯,返回"undefined"

typeof randomVariable // "undefined"

問題三:typeof Number(1)的返回值是什么?
答案:"number"。注意NumberString作為普通函數調用的時候,是把參數轉化為相應的原始數據類型,也就是類似于做一個強制類型轉換的操作,而不是默認當做構造函數調用。注意和Array區分,Array(...)等價于new Array(...)

typeof Number(1) // "number"
typeof String("1") // "string"

Array(1, 2, 3)
// 等價于
new Array(1, 2, 3)

問題四:typeof new Number(1)的返回值是什么?
答案:"object"

typeof new Number(1) // "object"
typeof new String(1) // "object"
instanceof

instanceof不能用于判斷原始數據類型的數據:

3 instanceof Number // false
"3" instanceof String // false
true instanceof Boolean // false

instanceof可以用來判斷對象的類型:

var date = new Date()
date instanceof Date // true

var number = new Number()
number instanceof Number // true

var string = new String()
string instanceof String // true

需要注意的是,instanceof的結果并不一定是可靠的,因為在ECMAScript7規范中可以通過自定義Symbol.hasInstance方法來覆蓋默認行為。詳情參見ECMAScript7規范中的instanceof操作符。

Object.prototype.toString
Object.prototype.toString.call(undefined).slice(8, -1) // "Undefined"
Object.prototype.toString.call(null).slice(8, -1) // "Null"

Object.prototype.toString.call(3).slice(8, -1) // "Number"
Object.prototype.toString.call(new Number(3)).slice(8, -1) // "Number"

Object.prototype.toString.call(true).slice(8, -1) // "Boolean"
Object.prototype.toString.call("3").slice(8, -1) // "String"
Object.prototype.toString.call(Symbol()).slice(8, -1) // "Symbol"

由上面的示例可知,該方法沒有辦法區分數字類型和數字對象類型,同理還有字符串類型和字符串對象類型、布爾類型和布爾對象類型。

另外,ECMAScript7規范定義了符號Symbol.toStringTag,你可以通過這個符號自定義Object.prototype.toString方法的行為:

"use strict"
var number = new Number(3)
number[Symbol.toStringTag] = "Custom"
Object.prototype.toString.call(number).slice(8, -1) // "Custom"

function a () {}
a[Symbol.toStringTag] = "Custom"
Object.prototype.toString.call(a).slice(8, -1) // "Custom"

var array = []
array[Symbol.toStringTag] = "Custom"
Object.prototype.toString.call(array).slice(8, -1) // "Custom"

因為Object.prototype.toString方法可以通過Symbol.toStringTag屬性來覆蓋默認行為,所以使用這個方法來判斷數據類型也不一定是可靠的。

Array.isArray

Array.isArray(value)可以用來判斷value是否是數組:

Array.isArray([]) // true
Array.isArray({}) // false
(function () {console.log(Array.isArray(arguments))}()) // false
總結

本文講解了我目前所知道的判斷JavaScript數據類型的方法,希望大家能有所收獲。如果本文有什么錯誤或者不嚴謹的地方,歡迎在評論區留言。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/98080.html

相關文章

  • JavaScript專題系列文章

    摘要:專題系列共計篇,主要研究日常開發中一些功能點的實現,比如防抖節流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數組合專題系列第十六篇,講解函數組合,并且使用柯里化和函數組合實現模式需求我們需要寫一個函數,輸入,返回。 JavaScript 專題之從零實現 jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現一個 jQuery 的 ext...

    Maxiye 評論0 收藏0
  • javascript如何判斷變量數據類型

    摘要:除和外,所有的數據類型都是可以轉化為對象,而如果是對象,就肯定有構造函數。特性因為和沒有構造函數,因此不能用此方法來判斷。由于同一條原型繼承鏈上的各個對象的構造函數都不一樣,因此,此方法可以區分開繼承鏈上的各個自定義數據類型。 typeof 用法示例 var arr = []; typeof arr; //object typeof(arr); //object typeo...

    曹金海 評論0 收藏0
  • JavaScript中,如何判斷數組是數組?

    摘要:比如我們今天要討論的,在當中如何判斷一個數組是數組。在數組的原型鏈上也能找到構造函數由上面的幾行代碼可以看出,使用運算符可以分辨數組和對象,可以判斷數組是數組。用判斷實例化的數組擁有一個屬性,這個屬性指向生成這個數組的方法。 如果你沒有注意過這個問題,那么這個標題應該會讓你感到困惑,判斷數據類型這么基礎的問題能有什么坑呢? 少年,你不能太天真了,我們朝夕面對的這門語言,可是JavaSc...

    kohoh_ 評論0 收藏0
  • 關于javascript類型判斷那些疑惑

    摘要:對于復雜類型它的每個實例都有屬性。當檢測實例時優于因為能檢測這段代碼是從的。補充以下結果,發現第三種方法也能正確判斷出。我們知道結果是那如何判斷兩個變量呢比較兩個變量,使用的即可。 Javascript中數據類型分為兩種: 簡單數據類型:Undefined, NULL, Boolean, Number, String 復雜數據類型:Object 接下來我們就來看看怎么做數據類型判別...

    李增田 評論0 收藏0
  • 分析 JavaScript 數據類型與變量

    摘要:基本數據類型在中,基本數據類型有種,即數值字符串布爾值。兩個布爾值轉為數值進行比較。對于對象和布爾值,調用它們的方法得到對應的字符串值,然后進行字符串相加。減法對于字符串布爾值或者,自動調用,轉換結果若為,那么最終結果為。 這篇文章,來聊聊 JS 中的數據類型與變量。這是在學習 JS 時最基礎的一類問題,但卻很重要。希望我的分享有幫助到你。 文章開頭,我先提幾個面試中遇到的問題: 比如...

    Mike617 評論0 收藏0

發表評論

0條評論

jackzou

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<