小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
javascript数据类型是作为Jser必备的知识,我们今天一起聊聊8种数据类型。 不要停留在六种数据类型的年代了,我们都要与时俱进,是吧!
undefined
其含义为未定义, 或者定义了未赋值。 其等于null, 但不严等于null
null == undefined // true
null === undefined // false
var a;
console.log(a); // undefined
// 判断是不是undefined
function isUndefined(val){
return val === undefined
}
其在旧版本的浏览器中可以被改写,所以 void 0
比其可靠,当然高版本的浏览器已经无此问题。
null
其表达为空值。 经常用于释放内存, 或者初始化赋值。
var a = null;
class A{
destroy(){
this.adpater = null
}
}
// 判断是不是null
function isNull(val){
return val === null
}
JS世界的梗,所以仅仅依据typeof来判断是不是对象,是不可靠的。
typeof null // object
String
字符串,最常见的数据格式。 除了null, undefined之外,其他均可通过toString
方法获得其对应的字符串的值。大部分自定义对象获得的是[object Object]
。
({}).toString() // [object Object]'
window.toString() // [object Window]
// 判断是不是string
function isString(val){
return typeof val === 'string'
}
其需要注意的是,字符串和其他类型进行 +
操作,最容易发生意外情况:
{} + '' // 0
[] + '' // ''
Number
数字,JavaScript中并无浮点数,整数的概念。
NaN: Not a Number的意思。
isNaN("0") // false
isNaN("ssss") // true
// 判断是不是Number
function isNumber(val){
return typeof val === 'number'
}
Boolean
布尔值,只有true
和false
.
这里有一个document.all的梗, 下面是不会输出的
if(document.all){
console.log("all?")
}
console.log(Boolean(document.all)) // false
// 判断是不是Boolean
function isBoolean(val){
return typeof val === 'boolean'
}
Object
对象,一切皆对象, typeof可以判断基础类型。
typeof window // object
判断是不是对象类型:
function isObject(obj){
return obj !== null && typeof obj === "object"
}
把其他类型包装为对象
Object(1); // Number {1}
new Object(1); // Number {1}
ES6 新增的 Symbol
符号的概念,主要是用来作为键,唯一的键。
// 判断是不是 Symbol
function isSymbol(val){
return typeof val === 'symbol'
}
ES11 新增的 BigInt
BigInt
是一种内置对象,它提供了一种方法来表示大于 253 - 1 的整数。
其不可以使用 new
关键字初始化
可以直接调用,或者整数字面量后面加 n
的方式定义一个 BigInt
BigInt(12345678978797978) // 12345678978797978n
12345678978797978n // 12345678978797978n
// 判断是不是 BigInt
function isBigInt(val){
return typeof val === 'bigint'
}
小结
今天你收获了吗?