小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
ECMAScript有6种简单数据类型(也被称为原始类型)
- Undefined
- Boolean
- Number
- String
- Symbol
- 还有一个复杂数据类型Object(对象):一种无序名值对的集合
typeof操作符
undefiend 未定义
boolean 布尔值
string 字符串
number 数值
object 对象(不是函数)或者null
function 函数
symbol 符号
let message = "some"
console.log(typeof message) //string
console.log(typeof (message)) //string
console.log(typeof 95) //number
Undefiend类型
Undefiend类型是一个值,当var或let声明变量但没有初始化时,就相当于给变量赋予了Undefiend值
let message
console.log(message == undefiend) //true
等同于
let message = nudefiend
console.log(message == nudefiend) //true
注意,包含nudefiend值的变量跟未定义变量是有区别的
let message; //声明了,值是nudefiend
//没有声明的变量
//let age
console.log(message) //nudefiend
consloe.log(age) //报错
Null类型
null类型同样是一个值,逻辑上,null是一个空对象
let car = null
console.log(typeof car) //object
nudefiend值是由null值派生而来,因此ECMA-262将它们定义为表面相等
console.log(null == nudefiend) //true
Boolean类型
两个字面值:true和false,true不等于1,false不等于0
let found = true
let lost = false
true和false是区分大小写的,因此True和False虽然有效,但不是布尔值 将其他值转换为布尔值,可以调用特定的Boolean()转型函数
let message = "hello"
let messageBoolean = Boolean(message)
| 数据类型 | 转换true的值 | 转换false的值 |
|---|---|---|
| Boolean | true | flalse |
| String | 非空字符串 | ""(空字符串) |
| Number | 非零数值(包括无穷值) | 0,NaN |
| Object | 任意对象 | null |
| Undefiend | N/A(不存在) | Undefiend |
理解上面的转换非常重要,在if等流程控制中,会自动转换
let message = "hello"
if(message) {
console.log("true")
}
//true
Number类型
表示整数和浮点数
let number = 15 //整数
//第一个数字必须是零(0),然后是相对应的八进制数字(0 ~ 7)
let cotaNum1 = 070; //八进制的56
let cotaNum2 = 079; //无效八进制,当成79处理
let cotaNum3 = 08; //无效八进制,当成8处理
浮点数
数值中必须包含小数点,小数点后至少有一个数字
let Num1 = 1.1
let NUm2 = 0.1
let Num3 = .1 //有效,但不推荐
如果数值本身是整数,只是小数点后面跟着0(如1.0),它会被转换成整数
let Num4 = 1. //1
let Num5 = 10.0 //10
NAN
不是数值,用于表示返回数值的操作失败了(不是抛出错误)
NaN吧等于包含NaN在内的任何值
conlose.log(NaN == NaN) //false
isNaN()函数,可以是任意数据类型,判断是否"不是数值"
console.log(isNaN(NaN)) //true
console.log(isNaN(10)) //false, 10是数值
console.log("blue") //true,不可以转换为数值
String类型
字符串可以使用双引号("), 单引号('),反引号(`)表示
let Name = "hello"
let Name = 'hello'
let Name = `hello`
转换字符串toString
let age = 11
let ageString = age.toString() //字符串“11”
//toString()可以接受一个底数参数,表示以什么底数来输出数值的字符串
let num = 10
console.log(num.toString()); //10
console.log(num.toString(2)); //1010
console.log(num.toString(8)); //12
console.log(num.toString(10)); //10
console.log(num.toString(16)); //a
String()转型函数,返回相应类型的字符串
- 如果值有toString方法,则调用该方法(不传参数)并返回结果
- 如果值是null,返回null
- 如果值是undefined,返回undefiend
Symbol类型
新增的,符号实例是唯一,不可变的,用途是确保对象属性使用唯一的标识符
let sym = Symbol()
console.log(typeof sym) //symbol