数据类型转换
- 数据类型之间的转换,比如数字转成字符串,字符串转成布尔,布尔转成数字等
其他数据类型转成数值
Number(变量)
可以把一个变量强制转换成数值类型
var num1 = 'aaaaa'; var num2 = Number(num1); console.log(typeof(num2)); // number
可以转换小数,会保留小数
可以转换布尔值
console.log(Number(true)); // 1 console.log(Number(false));// 0
遇到不可转换的都会返回
NaN
console.log(num2);// NaN
parseInt(变量)
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,那么直接返回
NaN
不认识小数点,只能保留整数
var test = '123abc'; console.log(parseInt(test)); // 结果:123 这个abc 就是普通字符串 所以没法转成合法的数
console.log(parseInt(test,16)); // 告诉转换器 123abc是一个16进制的数字 所以最终结果是转成10进制以后输出
console.log(parseInt('哈哈'));// NaN
var test = true var test1 = false console.log(parseInt(test));//NaN console.log(parseInt(test1));// NaN var test; console.log(parseInt(test));// NaN console.log(parseInt(null));// NaN
parseFloat(变量)
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,那么直接返回
NaN
认识一次小数点
var test = '123.45'; console.log(parseFloat(test));// 123.45 console.log(parseFloat('123.45abc'));// 123.45 var test; console.log(parseFloat(test));// NaN
除了加法以外的数学运算
运算符两边都是可运算数字才行
如果运算符任何一遍不是一个可运算数字,那么就会返回
NaN
加法不可以用
其他数据类型转成字符串
变量.toString()
有一些数据类型不能使用
toString()
方法,比如undefined
和null
console.log(typeof 100e5.toString());// string var test1 = true console.log(typeof test1.toString());// string var test2 = false console.log(typeof test2.toString());// string var haha; console.log(typeof haha.toString());// 报错
String(变量)
所有数据类型都可以
var test = 100; console.log(typeof String(test));// string
使用加法运算
在 JS 里面,
+
由两个含义字符串拼接: 只要
+
任意一边是字符串,就会进行字符串拼接加法运算:只有
+
两边都是数字的时候,才会进行数学运算console.log(typeof(1+1+'abc')) // 只要两边有一个字符串 那么就是拼接 // 从左往右运算 2+'abc' 2abc console.log(typeof('abc'+1+1)) // 开始见到字符串 后边所有都是拼接 // abc11
其他数据类型转成布尔
Boolean(变量)
在 JS 中,只有
''
、0
、null
、undefined
、NaN
,这些是false
其余都是
true
运算符
- 就是在代码里面进行运算的时候使用的符号,不光只是数学运算,我们在
js
里面还有很多的运算方式
数学运算符
+
只有符号两边都是数字的时候才会进行加法运算
只要符号任意一边是字符串类型,就会进行字符串拼接
console.log(true+false) // 隐式转换 true 1 false 0 结果 1
-
会执行减法运算
会自动把两边都转换成数字进行运算
console.log(100-123) // -23 console.log('abc'-123)// NaN console.log(true-false) //1
*
会执行乘法运算
会自动把两边都转换成数字进行运算
console.log(2**3) // 8(平方)
/
会执行除法运算
会自动把两边都转换成数字进行运算
console.log(100/0) // Infinity
%
会执行取余运算
会自动把两边都转换成数字进行运算
赋值运算符
=
就是把
=
右边的赋值给等号左边的变量名var num = 100
就是把 100 赋值给 num 变量
那么 num 变量的值就是 100
+=
var a = 10; a += 10; console.log(a); //=> 20
a += 10
等价于a = a + 10
-=
var a = 10;
a -= 10; console.log(a); //=> 0
a -= 10
等价于a = a - 10
*=
var a = 10; a *= 10; console.log(a); //=> 100
a *= 10
等价于a = a * 10
/+
var a = 10; a /= 10; console.log(a); //=> 1
a /= 10
等价于a = a / 10
%=
var a = 10; a %= 10; console.log(a); //=> 0
a %= 10
等价于a = a % 10
比较运算符
==
比较符号两边的值是否相等,不管数据类型 >
1 == '1'
两个的值是一样的,所以得到
true
===
比较符号两边的值和数据类型是否都相等 >
1 === '1'
两个值虽然一样,但是因为数据类型不一样,所以得到
false
!=
比较符号两边的值是否不等 >
1 != '1'
因为两边的值是相等的,所以比较他们不等的时候得到
false
!==
比较符号两边的数据类型和值是否不等 >
1 !== '1'
因为两边的数据类型确实不一样,所以得到
true
>=
比较左边的值是否
大于或等于
右边的值 >
1 >= 1
结果是true
1 >= 0
结果是true
1 >= 2
结果是false
<=
比较左边的值是否
小于或等于
右边的值 >
1 <= 2
结果是true
1 <= 1
结果是true
1 <= 0
结果是false
>
比较左边的值是否
大于
右边的值 >
1 > 0
结果是true
1 > 1
结果是false
1 > 2
结果是false
<
比较左边的值是否
小于
右边的值 >
1 < 2
结果是true
1 < 1
结果是false
1 < 0
结果是false
逻辑运算符
&&
进行 且 的运算 >
符号左边必须为
true
并且右边也是true
,才会返回true
只要有一边不是
true
,那么就会返回false
true && true
结果是true
true && false
结果是false
false && true
结果是false
false && false
结果是false
var test5= true && true && true && false && true // 遇到false 停止向右走
||
进行 或 的运算 >
符号的左边为
true
或者右边为true
,都会返回true
只有两边都是
false
的时候才会返回false
true || true
结果是true
true || false
结果是true
false || true
结果是true
false || false
结果是false
!
进行 取反 运算 >
本身是
true
的,会变成false
本身是
false
的,会变成true
!true
结果是false
!false
结果是true
自增自减运算符(一元运算符)
++
进行自增运算
分成两种,前置++ 和 后置++
前置++,会先把值自动 +1,在返回
var a = 10; console.log(++a); // 会返回 11,并且把 a 的值变成 11
后置++,会先把值返回,在自动+1
var a = 10; console.log(a++); // 会返回 10,然后把 a 的值变成 11
--
- 进行自减运算
- 分成两种,前置– 和 后置–
- 和
++
运算符道理一样