JavaScript基础数据类型

321 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

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

布尔值,只有truefalse.

这里有一个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'
}

小结

今天你收获了吗?