js数据类型
数值型(Number)
var a = 1 // 正整型
var a1 = -1 // 负整型
var a2 = 1.2 // 浮点型
var a3 = 02 // 以零开头的是 八进制数 , es6之后禁用了
var a4 = 0x1 // 以0x开头的是十六进制数
var a5 = 1.3e2 // 科学计数法 , ==== 1.3*10**2 10的二次方
数值类型在运算时都是以二进制进行运算的,浮点型也是一样 ,所以运算结果不准确
字符串型(String)
var b = "a"
var b1 = 'a'
var b2 = `a` // 模版字符串
字符串中不允许使用相同的引号
var b3 = "abc'd'efg"
布尔型(Boolean)
var a = true
var b = false
未定义类型(Undefined)
var c = undefined // 直接赋值为undefined,会将之前的所有的值覆盖
var c1 // 没有赋值,系统默认赋予undefined
空类型(Null)
// 解决内存泄漏, 处理引用对象的引用关系
var e = null // 这个值得类型是object类型
函数类型(function)
function fn(){
语句块
}
函数在js中有一个特性:预解析预赋值,不同于变量的预解析,函数在声明命名空间后,还会直接将定义的具体函数执行赋值改命名空间
var d = undefined
function d(){
console.log("我是一个函数")
}
console.log(d) // undefined 在js代码执行前,var变量和函数都会预解析声明变量空间,d变量空间先被创建,函数还有预赋值,开始时的d ,就是函数d ,起值也就是函数本身,在代码开始执行后,按顺序执行,执行至 d = undefined 时 将函数值替换为undefined,因为函数预解析预赋值,不在重复执行,直接到打印d , 输出undefined
对象数据类型(Object)
var obj = {a: 1 , b:2}
es6新增: 大整形(Bigint) ,唯一类型(Symbol)
大整型 :数字n + 数字n 数字超限时在数据末尾加n ,这就是大整型
- 数字的长度是受限制的,当数据超出一定范围后,将不再显示具体的运算结果,大整型就是来解决这个问题的
var a = 10000000000000000
var b = 1
console.log(a+b) // 10000000,反正最多显示到17位还可以预算,到十八位往后统一显示1E18
var a = 100000000000000000n
var b = 1n
console.log(a+b) // 1000000000000000001n 多少个零不重要,重要的是此时俩变量不管多少位,都会进行运算,只是后面多个n
唯一类型:Symbol 去除魔术字符串
const WALK = Symbol("walk") , RUN = Symbol("walk")
console.log(WALk == RUN) // false 唯一类型,即使定义的值相同,代表的常量也不相同
一般用途:
const WALK = Symbol() ,RUN = Symbol() , JUMP = Sybmol()
var state = RUN
if(sate === WALK){
console.log("走")
}else if(state === RUN ){
console.log("跑")
}else if(state == JUMP){
console.log("跳")
}
即使都是空,三个常量也是不相同的,这样在判断的时候只要判断常量即可,避免以后修改判断条件时要改动过多的地方
typeof 数据类型检测
var a = 1
console.log(typeof a) // number
这样在判断的时候只要判断常量即可,避免以后修改判断条件时要改动过多的地方**
typeof 数据类型检测
var a = 1
console.log(typeof a) // number