JS是一种弱类型或者动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。在代码运行时,变量的数据类型是由 JS 引擎根据=右边变量值的数据类型来判断的,运行完毕之后,变量就确定了数据类型。
一、基本数据类型
基本数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包括整型数和浮点型,如100、3.14 | 0 |
String | 字符串型,例如 '' 张三'' js中字符串都带引号('' "") | '' 或 '''' |
Boolean | 布尔型,例如:true和false ,等价于 1 和 0 | false |
Undefined | 未定义,js中声明了变量没有给他赋值,结果就为Undefined | undefined |
Null | let a = null;声明了一个变量 a null | null |
Symbol | 字符型,ES6新增 |
-
查看数据类型(typeof)
let num=10,str='张三' console.log(typeof num);// 值为number console.log(typeof str);// 值为string
1.数字型 Number
- 整数
let a = 100; console.log(a);// 结果为整数100
- 浮点数
let b = 3.14; console.log(b) // 结果为浮点数3.14
- 最大值/最小值
console.log(Number.MAX_VALUE)// 最大值 console.log(Number.MIN_VALUE)// 最小值
- 无穷大
/* 无穷可以分为两种,正无穷和负无穷, JS 中对应的表示方式为:+Infinity 和 -Infinity。*/
- 非数 NaN (计算不出结果)
/**非数不与任何值相等,包括他自己。 涉及到NaN计算只会得到NaN。 **/ let num = 'zhangsan'-10; console.log(num) // 结果为NaN
isNaN()判断是不是数字,是数字返回false,不是数字返回true;
console.log(isNaN(10))// false console.log(isNaN('abc'-10))// true console.log(isNaN('10'))// false (存在隐式转换)
2.字符串 String
- 转义符
// 注意引号的嵌套问题,可以使用不同的引号来进行区分 let str = '它说:"babababa!"'; // \' 单引号 let str1 = '它说:\'babababa!\''; // \n 换行符 newline let str2 = '红烧肉,\n冒菜';
- 字符串长度 ( length)
// 查看字符串长度 length let str3 = 'hongshaorou' console.log(str3.length);// 结果为11
注意:空格、字符也算一个长度
-
字符串拼接 (+)
// 字符串拼接 + let str4 = '999',str5='感冒灵'; console.log(str4+str5);// 999感冒灵 console.log('12'+12);// 1212 console.log('12'+'12');// 1212
注意:字符串和任意值拼接都会转化成字符串
-
ES6新增的字符串模板(``)
特点: 1.支持多行文本
let str6 = `0糖
0卡
0脂肪`
console.log(str6);// 0糖0卡0脂肪
2.进行变量解析 (`${变量}`)
// 使用`${}`做字符串拼接,{}里面也可以做运算
let name = 'zhangsan',age = 18;
console.log(`我叫${name},我今年${age+2}岁`);//
3.布尔型 true和false
let flag1 = true,flag2 = false;
console.log(typeof flag1,typeof flag2);
console.log(flag1+1);// 在加法中,true被当作1
console.log(flag1+1);// 在加法中,false被当作0
会返回 boolean 中 false 的情况 :
- 空字符串,包含 ''、 ""、字符串模板``
- 0
- NaN
- undefined
- false
- null
4.未定义 undefined
let u=undefined;
console.log(u,typeof u);
console.log(u,typeof u);// 数字与undefined相加会得到NaN
返回 undefined 的情况
- 访问未赋值的变量
- 任何被设置为 undefined 值的变量
- 没有定义 return 表达式的函数,隐式返回 undefined
- return 表达式没有显示的返回任何内容
- 访问超出数组长度-1的索引号
- 访问不存在的属性
5.空值 null
undefined表示缺少值;null常常用于释放内存,计算时看作0
let a = null;
console.log(typeof a);// 结果输出为object 这是一个bug 数据类型还是null
let a1 = '10',a2 = 10;
console.log(a1==a2);// true ==只比较两个变量的值
console.log(a1===a2);// false ===比较两个变量的值和数据类型
console.log(null+'aaa');// nullaaa
console.log(null+1);// 1 null计算看作0
二、数据类型的转换
1、隐式类型转换
隐式转换就是系统内部自动发生的转换,一般发生于不同的数据类型进行运算时
- 不同数据类型进行比较
- 不同数据类型进行运算
- 对非布尔值求布尔值
2、转换成字符串
变量.toFixed() 把保留几位小数写在括号里;调用这个方法会将结果转换成字符串类型。
3、转换成数字
4、转换成布尔型
console.log(boolean(0));// false
console.log(boolean('0'));// true
!!两次可以求非布尔值的布尔值