数据类型
JavaScript的数据类型???很多初学者在学习时并没有特别在意过JavaScript的数据类型,可能是因为JavaScript是弱类型语言(松散类型)这使得我们在定义变量时并不会显示的声明变量的类型。但着并不代表JavaScript没有数据类型。JavaScript有六种简单类型和一种复杂类型。
简单类型:
名称 | 意义 |
---|---|
String | 字符串类型 |
Number | 数值类型 |
Boolean | 布尔类型 |
Symbol | 符号类型(ES6新增) |
Undefined | 未定义 |
Null | 空指针对象 |
复杂类型:
名称 | 意义 |
---|---|
Object | 对象类型 |
判断类型
JavaScript中如何判断变量的类型?JavaScript在声明变量时没有直接定义变量的类型,但我们可以使用typeof操作符来确定变量的类型。
let varString = "varString";
let varNumber = 1;
let varBoolean = true;
let varSymbol = Symbol();
let varUndefined;
let varNull = null;
let varObject = new Object()
console.log(varString); //值为varString
console.log(varNumber); //值为1
console.log(varBoolean); //值为true
console.log(varSymbol); //值为Symbol()
console.log(varUndefined);//值为undefined
console.log(varNull); //值为null
console.log(varObject); //值为{}
console.log(typeof varString); //值为string
console.log(typeof varNumber); //值为number
console.log(typeof varBoolean); //值为boolean
console.log(typeof varSymbol); //值为symbol
console.log(typeof varUndefined); //值为undefined
console.log(typeof varNull); //值为object
console.log(typeof varObject); //值为object
Null类型为什么被typeof操作符确认为object类型?因为null被认为是对空对象的引用。
Undefined类型
Undefined类型只有一个值——undefined。当一个变量被声明但没有被初始化时,这个变量会被赋值为undefined。那如果我们将变量初始化为undefined,其实二者是一样的。所以说一般不会显示的为变量赋值为undefined。
//不进行初始化
let varUndefined;
console.log(typeof varUndefined); //值为undefined
//进行初始化
let varUndefined = undefined;
console.log(typeof varUndefined); //值为undefined
Null类型
Null类型只有一个值——null,null表示一个空指针对象。Undefined的值是由null派生而来。如果使用表达式undenfined==null,则返回true。但是与undefined不同,当需要声明一个变量用于保存对象,在给这个变量进行初始时,可以为变量赋值为null。
Boolean类型
Boolean类型有两个值分别是true和false。Boolean值在大多数情况下是由表达式产生的,常用于if判断。Boolean值也可以由不同的类型转变而来。如下表:
数据类型 | true | false |
---|---|---|
Boolean | true | false |
String | 非空字符串 | 空字符串 |
Number | 非零数值 | 0 |
Object | 非空对象 | null |
Undefined | undefined |
Number类型
Number类型分为两类,一类是整数型,一类是浮点型。
let intNum = 1;//整数型
let floatNum = 1.1//浮点型
如果数值非常大可以使用科学计数法
let bigNum = 1.1e7;//科学计数法,值为11000000
就像其他类型可以转换为Boolean类型一样,一些类型的特殊值也可以转化为Number类型,函数Numbe()用于将其他类型值转化为Number类型,函数parseInt()和函数parseFloat()主要用与将字符串转化为数值。
//Numbe()
let num1 = Number(true) // 1
let num2 = Number(false) // 0
let num3 = Number(null) // 0
let num4 = Number("1") // 1
let num5 = Number("01") // 1
let num6 = Number("") // 0
//parseInt()
let num1 = parseInt("1") // 1
let num2 = parseInt("") // NaN
let num3 = parseInt("S1") // NaN
let num4 = parseInt("1S") // 1
let num5 = parseInt("1.1") // 1
let num6 = parseInt("10",2) // 2 二进制解析
let num7 = parseInt("10",8) // 8 八进制解析
let num8 = parseInt("10",10) // 10 十进制解析
let num9 = parseInt("10",16) // 16 十六进制解析
//parseFloat()
let num1 = parseFloat("1.1") // 1.1
let num2 = parseFloat("") // NaN
let num3 = parseFloat("S1.1") // NaN
let num4 = parseFloat("1.1S") // 1.1
let num5 = parseFloat("1") // 1
String类型
String类型表示零个或多个字符序列。String类型可以使用双引号,单引号和反引号进行标示。可使用toString()方法进行类型转换。
let string1 = "tree"
let string2 = 'tree'
let string3 = `tree`
//toString
let number = 1
let numburToString = number.toString()// "1"
let boolean = true
let booleanToString = boolean.toString()// "true"
模板字面量
模板字面量是ES6新增的特性。即在反引号(``)内定义需要的字符串和格式。注意模板字面量是保留换行符和空格的。同时模板字面量也支持字符串插值操作,通过在${}中添加表达式实现。
//