一、字面量、变量、常量
- 字面量:字面量就是一个值,比如变量的值或者常量的值
- 变 量:定义完成后,可以修改的数据,var关键字 定义
- 常 量:定义完成后,固定且不能改变的数据,const关键字 定义
总结:
常量与变量的区别:
① 常量与变量的存储方式是一样的,只不过常量必须要有初始值,而且值不允许被修改,而变量可以无初始值,且可以多次赋值。
常量与字面量的区别:
① 常量与字面量均不会被改变,常量为存储数据的容器,而字面量为等号右侧的值,字面量是由字符串,数字等构成的字符串或数值。
二、数据类型
- 程序在运行过程中会产生各种各样的临时数据, 为了方便数据的运算和操作, JavaScript对这些数据进行了分类, 提供了丰富的数据类型;
数据类型划分:
① 简单数据类型:Number、String、Boolean、Undefined、Null
② 引用(复杂)数据类型:Object
数据类型查看:typeof 操作符,会将检查的结果以字符串的形式返回给我们
- 简单数据类型
Number:
① 在JS中所有的数值都是Number类型(整数和小数)
var num1= 123;
var num2= 3.14;
console.log(typeof num1);
console.log(typeof num2);
② 由于内存的限制,ECMAScript 并不能保存世界上所有的数值
// 最大值:Number.MAX_VALUE
console.log(Number.MAX_VALUE);
// 最小值:Number.MIN_VALUE
console.log(Number.MIN_VALUE);
// 无穷大:Infinity, 如果超过了最大值就会返回该值
console.log(Number.MAX_VALUE + Number.MAX_VALUE);
// 无穷小:-Infinity, 如果超过了最小值就会返回该值
console.log(typeof Infinity);
console.log(typeof -Infinity);
③ NaN 非法数字(Not A Number)
JS中当对数值进行计算时没有结果返回,则返回NaN
var num = NaN;
console.log(num);
console.log(typeof num);
注意:JS中整数的运算可以保证精确的结果
在JS中浮点数的运算可能得到一个不精确的结果
String:
① 字符串由单引号或双引号括起
② 使用字符串注意事项
- 不能一单一双,必须成对出现
- 相同引号不能嵌套,不同引号可以嵌套
- 给变量加上引号, 那么变量将变为一个常量
Boolean:
布尔型也被称为逻辑值类型或者真假值类型, 只能够取真(true)和假(false)两种数值
- 任何非零数值都是true, 包括正负无穷大, 只有0和NaN是false
- 任何非空字符串都是true, 只有空字符串是false
- 任何对象都是true, 只有null和undefined是false
var bool1 = Boolean(0);
console.log(bool1 );
var bool2 = Boolean(1);
console.log(bool2 );
var bool3 = Boolean(-1);
console.log(bool3 );
var bool4 = Boolean("hello");
console.log(bool4);
var bool5 = Boolean("");
console.log(bool5 );
var bool6 = Boolean(undefined);
console.log(bool6 );
var bool7 = Boolean(null);
console.log(bool7);
Null和Undefined:
① Undefined是一种比较特殊的类型,表示变量未赋值,这种类型只有一种值就是undefined
undefined是Undefined类型的字面量,undefined和168、 "itlike"一样是一个字面量,Undefined和Number、String一样是一个数据类型,typeof对没有初始化和没有声明的变量都会返回undefined
② Null 类型也是只有一个值的数据类型,这个特殊的值是 null
从语义上看null表示的是一个空的对象,所以使用typeof检查null会返回一个Object
undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true
三、数据类型转化
转换成字符串类型
终极大法:拼接字符串方式
任何数据和 + " " 连接到一起都会转换为字符串将其它类型转换为Number类型
① 字符串转数字:
- 如果字符串为空或者是一个全是空格的字符串,则转换为0
var s2 = "";
var r2 = Number(s2);
console.log(r2);
var s3 = " ";
var r3 = Number(s3);
console.log(r3);
- 如果字符串中有非数字的内容,则转换为NaN
② 布尔转数字
- true 转成 1,false 转成 0
③ null和undefined转数字
- null转数字为0
var s1 = null;
var r1 = Number(s1);
console.log(r1);
- undefined转数字为NaN
var s2 = undefined;
var r2= Number(s2);
console.log(r2);
- parseInt()函数/parseFloat()函数
① 使用意义
Number()函数中无论字符串中是否存在有效整数都会直接返回NaN,
利用parseInt()和parseFloat()可以提取字符串中的有效整数和浮点数
② parseInt()
- 有两个参数,第一个参数是要转换的字符串,第二个参数是要转换的进制
- 从第一位有效数字开始,直到遇到无效数字
- 如果第一位不是有效数字,则直接返回NaN
var s1 = "10rem";
var r1 = parseInt(s1);
console.log(r1);
var s2 = "200X300";
var r2 = parseInt(s2);
console.log(r2);
var s3 = "itLike001";
var r3 = parseInt(s3);
console.log(r3);
var s4 = "";
var r4 = parseInt(s4);
console.log(r4);
③ parseFloat()
- 不支持第二个参数,只能解析十进制数
- 如果解析的内容里只有整数,则只解析成整数
- 如果第一位不是有效数字,则直接返回NaN
- 从第一位有效数字开始,直到遇到无效数字
④ 使用注意
- 对非String使用parseInt()或parseFloat(), 会先将其转换为String类型然后在操作
var s7 = false;
var r7 = parseInt(s7);
console.log(r7);
- +和-0运算符
- 添加+号, 不会修改数据的正负性
var s1 = "12306";
var r1 = +s1;
console.log(r1);
console.log(typeof r1);
var s2 = "1.01";
var r2 = +s2;
console.log(r2);
console.log(typeof r2);
var s3 = "20rem";
var r3 = +s3;
console.log(r3);
console.log(typeof r3);
var s4 = true;
var r4 = +s4;
console.log(r4);
console.log(typeof r4);
var s5 = false;
var r5 = +s5;
console.log(r5);
console.log(typeof r5);
- 转成布尔类型
- Boolean() , 0 ''(空字符串) null undefined NaN 会转换成false 其它都会转换成true
console.log(Boolean(0));
console.log(Boolean(''));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));
console.log(Boolean(-1));
var str = 'itLike';
var num1 = 123;
var num2 = -1;
console.log(Boolean(str));
console.log(Boolean(num1));
console.log(Boolean(num2));