数据类型
复习 target
- 能说出6种简单数据类型
- 能使用 typeof 获取变量的类型
- 能说出 1-2 种转换为数值型的方法
- 能说出 1-2 种转换为字符型的方法
- 能说出什么是隐式转换
目录知识点
- 数据类型简介
- 简单和复杂数据类型
- 获取变量数据类型
- 数据类型转换
1、数据类型简介
JS 是一种弱类型、动态语言,它不用提前声明变量的类型。
2、数据类型
JS 有6种简单数据类型,1种复杂数据类型。
简单数据类型如下:
ES6 新增了一种数据类型——Symbol(符号)。
复杂数据类型只有一种:Object(对象)。
数字型数据 Number
1、八进制,在数字前面加 0 表示八进制。十六进制 取值范围:0~9 A~F; 在数字前面加 0x (区分大小写)表示十六进制
let num1 = 070 // 八进制的56
let num2 = 079 // 无效的八进制,当成十进制79处理
let num3 = 0xA // 十六进制10
2、浮点值。浮点值在算术计算中远不如整数精确,故永远不要测试某个特定的浮点值。
var a = 0.1, b = 0.2;
// 0.1 + 0.2 得到的不是0.3,而是 0.300 000 000 000 000 04
if( a + b == 0.3){ // 永远不要这么写!
console.log("You got 0.3.");
}
3、三个特殊值 Infinity、-Infinity、NaN(not a number缩写)
4、最大值:Number.MAX_VALUE、Number.MIN_VALUE
isNaN() 方法用来判断非数字。它可以接收任何数据类型。把一个值传给 isNaN() 后,它会尝试转换为数值,如果成功转换成数值则返回 false,如果不能转换为数值则返回 true。
字符串类型 String
加了单引号、或者双引号的都称为字符串类型。推荐JS中使用单引号。
1、字符串中的引号嵌套:外单内双,外双内单。
例如: var str = ' 我是一个 "高富帅" 程序员 '
2、字符串转义符
转义符都是 \ 开头的,且转义字符都要写到引号里。
3、字符串长度
由字符串的 length 属性来获得字符串长度。
4、字符串拼接
多个字符串之间可以使用 + 进行拼接,其拼接方式为 字符串 + 任何类型 = 拼接之后的新字符串
拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
案例:显示用户年龄
var age = prompt('请输入您的年龄');
var str = '您今年已经' + age + '岁了';
alert(str);
5、模板字面量
ES6新增了模板字面量。与使用单引号或双引号不同,模板字面量保留内部的空格和换行字符,可以跨行定义字符串。
示例:
let str1 = ' first line\n second line ' // 单引号定义字符串
let str2 = ` first line
second line` //模板字面量定义字符串,会保持内部的空格和换行符
布尔型数据 Boolean
布尔型数据有两个字面值:true 和 false。
布尔型数据和数字型数据运算的时候,true的值为1,false的值为0。但平常时布尔值不同于数值。
undefined 和 null 类型
undefined 类型只有一个值,就是特殊值 undefined。当使用 var 或 let 声明变量但没有初始化时,就相当于给变量赋予了undefined的值。
null 类型只有一个值,即特殊值 null。逻辑上讲,null 值表示一个空对象指针,这也是 typeof 传一个 null 会返回“object” 的原因。
任何时候,只要变量将来要保存一个对象值,而当时有没有那个变量,就要用 null 来填充该变量。这样就可以保持 null 是空对象指针的语义,并进一步将其与 undefined 区分。
3、获取变量数据类型
3.1 typeof
type of 可用来获取检测变量的数据类型
3.2 字面量
字面量是在源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值。
- 数字字面量:8.9.10
- 字符串字面量:‘前端开发努力学习’
- 布尔字面量:true,false
4.数据类型转换
4.1 转换为字符串
注意 toString() 和 String() 使用语法不同。
toString() 适用于大部分值,但不适用于 null 和 undefined。如果不能确定一个值是不是 null 和 undefined,可以使用 String()方法。
三种转换方式,通常更喜欢用第三种 “加号凭借字符串”转换方式,这一种方式也被称为隐式转换。
4.2 转换为数字型 (重点)
注意 parseInt 和 parseFloat 单词的大小写
Number() 可以用于任何数据类型。parseInt 和 parseFloat 则主要用于字符串转换为数值。
隐式转换是我们在进行算术运算的时候,JS自动转换了数据类型。
let num1 = Number("Hello world!"); // NaN
let num2 = Number(""); // 0
let num3 = Number("000011"); // 11
let num4 = Number("true"); // 1
let num5 = parseInt('3.14'); // 3
let num6 = parseInt('3.94'); // 3
let num7 = parseInt('120px'); // 120
let num8 = parseInt('rem120px'); // 3
let num9 = parseInt('0xAF'); // 170,十六进制
let num9 = parseInt('AF',16); // 170
//利用算术运算 - * / 来隐式转换
console.log('12'- 0); // 12
console.log('123'- '120'); // 3
console.log('123' * 1); // 123
//注意如果是 + 则不行
4.3 转换为布尔类型
代表空、否定的值会被转换为false,如 ' ' 、0、NaN、null、undefined
其余值都会被转换为true。