判断数据类型
-
既然已经把数据分开了类型,那么我们就要知道我们存储的数据是一个什么类型的数据
-
使用
typeof
关键字来返回数据的类型typeof 检测数据类型(有返回结果)
var a = null ;
console.log( typeof a ); // object 对象
// 第一种使用方式
var n1 = 100;
console.log(typeof n1);
// 第二种使用方式
var s1 = 'abcdefg';
console.log(typeof(s1));
判断一个变量是不是数字
- 可以使用
isNaN
这个方法来判断一个变量是不是数字,是数字则为false;不是则为true isNaN
:is not a number
// 如果变量是一个数字
var n1 = 100;
console.log(isNaN(n1)); //=> false
// 如果变量不是一个数字
var s1 = 'Jack'
console.log(isNaN(s1)); //=> true
数据类型转换
- 数据类型之间的转换,比如数字转成字符串,字符串转成布尔,布尔转成数字等
- 计算机中任何数据进行计算都需要转换成二进制
隐式转换
弱类型语句中,类型不同,弱类型语言会自动将数据转换为相同类型,然后运算
隐式转换遵从 String() Number() Boolean()
强制转换
主动将数据的类型强制转换成某种类型,强制转换可以分为以下几种情况:
其他数据类型转成数值
-
Number(变量)
可以把一个变量强制转换成数值类型
可以转换小数,会保留小数
可以转换布尔值
遇到不可转换的都会返回
NaN
纯数字字符 =>数字; 纯字母字符 => NaN; 带字母字符 => NaN; null => 0; undefined => NaN; true => 1; false => 0
-
parseInt(变量)
从第一位开始检查,是数字就转换,直到一个不是数字的内容
开头就不是数字,那么直接返回
NaN
不认识小数点,只能保留整数
纯数字字符 =>数字; 纯字母字符 / 以字母开头的带数字字符 => NaN; null => NaN; undefined => NaN; true => NaN; false => NaN;
数字开头带字母的字符 => 转换到第一个字母字符前为止,前面的数字字符转成数字*
【注】parseInt ( str , n ) 将 n 进制字符串str 转换成 10进制数值没有n,默认以10进制显示str字符串并转换程10进制数值*
即,parseInt ( str , n ) 是 (数据). toString(n)的逆转换
-
parseFloat(变量)
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,那么直接返回
NaN
认识一次小数点
-
除了加法以外的数学运算
运算符两边都是可运算数字才行
如果运算符任何一遍不是一个可运算数字,那么就会返回
NaN
加法不可以用
其他数据类型转成字符串
-
变量.toString()
有一些数据类型不能使用
toString()
方法,比如undefined
和null
(数据). toString(n) 将数字转换成 n 进制字符 (进制必须大于等于 2 且小于等于36 )
(数据).toFixed(n) 数值转成字符串并保留小数点后 n 位,四舍五入(存在误差)
-
String(变量)
所有数据类型都可以
-
使用加法运算
在 JS 里面,
+
由两个含义字符串拼接: 只要
+
任意一边是字符串,就会进行字符串拼接加法运算:只有
+
两边都是数字的时候,才会进行数学运算
其他数据类型转成布尔
-
Boolean(变量)
在 js 中,只有
""
、0
、null
、false
、undefined
、NaN
,这些是false
其余(包含带空格的空字符串" ")都是
true
运算符
- 就是在代码里面进行运算的时候使用的符号,不光只是数学运算,我们在
js
里面还有很多的运算方式
数学运算符
-
+
(字符相加和数值相加)只有符号两边都是数字的时候才会进行加法运算
只要符号任意一边是字符串类型,就会进行字符串拼接
【注】字符表示单个字母;字符串表示多个字母组成字串
-
-
会执行减法运算
会自动把两边都转换成数字进行运算
-
*
会执行乘法运算
会自动把两边都转换成数字进行运算
-
/
会执行除法运算
会自动把两边都转换成数字进行运算
-
%
会执行取余运算
会自动把两边都转换成数字进行运算
1)- * / % 都是隐式转换成数值,不论有没有字符
2)+如果是字符和非字符相加,则会自动将非字符隐式转换成字符 String() 此时+为拼接符
如果没有字符,则会隐式转换成数值进行计算
数值 + NaN = NaN, true + false = 1
赋值运算符
-
=
就是把
=
右边的赋值给等号左边的变量名var num = 100
就是把 100 赋值给 num 变量
那么 num 变量的值就是 100
-
+=
var a = 10; a += 10; console.log(a); //=> 20
a += 10
等价于a = a + 10
,这里的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
在元数据的基础上进行累加 累减等操作,得到计算后的新值,原数据也会发生改变
eg: var e=20;
console.log(e-10); //结果是10 e的值没有发生改变e:20
console.log(e-=10); //结果是10 e的值发生改变
比较运算符
-
==
-
比较符号两边的值是否相等,不管数据类型
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
-
【注】
隐式转换内容为数值,如果都是字符,则通过ASCII转换成编码值,再比较。
没办法比较时,结果为 false
!==(绝对不等) 和 === 都不会隐式转换
null和undefined特殊都没有值 不和其他值进行比较
console.log(0==null); // false null是用来切断引用关系的
console.log(null==undefined); // true
以下几点均为true
console.log(""==0); // 空字符串会隐式转换成数值 0
console.log(""==false);
console.log(0==false);
console.log(NaN==NaN); // false 非数值永不等
逻辑运算符
-
&&
-
进行 且 的运算
-
一假即假
遇到第一个条件为假,则停止后续的判断,返回其假值,否则则一直运行到最后,若最后一个条件为真,则返回该值
-
符号左边必须为
true
并且右边也是true
,才会返回true
只要有一边不是
true
,那么就会返回false
true && true
结果是true
true && false
结果是false
false && true
结果是false
false && false
结果是false
-
符号左边必须为
true
并且右边也是true
,才会返回true
只要有一边不是
true
,那么就会返回false
true && true
结果是true
true && false
结果是false
false && true
结果是false
false && false
结果是false
-
-
||
-
进行 或 的运算
-
一真即真
遇到第一个条件为真,则停止后续的判断,返回其真值,否则则一直运行到最后,若最后一个条件为假,则返回该值
-
符号的左边为
true
或者右边为true
,都会返回true
只有两边都是
false
的时候才会返回false
true || true
结果是true
true || false
结果是true
false || true
结果是true
false || false
结果是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
-
-
--
- 进行自减运算
- 分成两种,前置– 和 后置–
- 和
++
运算符道理一样
【注】计算时全部隐式转换成数值运算