一、数据类型转换的规则
1.1其它类型转为number
1.string->number
纯数字字符串->对应的数字
空字符串,纯空格字符串->0
其它->nan
2.boolean-> number
true->1
false->0
3.null->0
4.undefined->nan
1.2其它类型转为string
1.number->string
数字会作为字符串内容
2.boolearn->string
true->'true'
false->'false'
3.null->'null'
4.undefined->'undefined'
1.3其它类型转为boolean
1.number->boolean
0,nan-false
其它->true
2.string->boolean
空字符串->false
其它->true
3.null->false
4.undefined -> false
1.4强制类型转换
parseInt()、parseFloat() 与 Number() 转换规则的区别:
- parseInt()、parseFloat() 可以把以数字开头的字符串转为开头的数字(提取字符串中的数字)
- 空字符串、纯空格字符串和其他形式的字符串都是 NaN
- 布尔值、null、undefined 都会转为 NaN
parseInt 和 parseFloat 的区别:
- parseInt() 只提取字符串中数字里的整数部分
- parseFloat() 提取字符串中数字的整数部分加小数部分
其它类型转为number:
number()
parseInt()
parseFloat()
其他类型转为 string:
String()
其他类型转为 boolean:
Boolean()
1.5自动类型转换
数据会根据当前所处的运算环境自动进行类型转换
运算环境由运算符决定。
算数运算符
+作为正号运算符,通常会用来把其他数据类型转为number
++,--运算符,运算符在表达式前面还是后面,表达式的值是不同的,
但是副作用是相同的。
关系运算符
1.==和===的区别
==相等可以进行数据类型转换
===全等,不会进行数据类型转换两个操作数类型不一致,直接返回false
2.==和null(特殊情况)
null==0;//false
null=='';//false
null==false;//false
null==undefined;//true
3.字符串比较
如果关系运算符的两个操作数都是字符串,安照字符串方式进行比较
比大小:一个字符一个字符的比,比的字符对应的ascii吗
判等:完全一致。
逻辑运算符
1.逻辑与&&组成的表达式的值:
如果第一个操作数是成立的,把第二个操作数作为表达式的值;
如果第一操作数不成立,把第一个操作数作为表达式的值。
2.逻辑或||组成表达式的值:
如果第一个操作数成立,把第一个操作数作为表达式的值
如果第一个操作数不成立,把第二个操作数作为表达式的值
赋值运算符
1.赋值运算符左边的操作数必须是个变量
2.赋值运算符更看重的是副作用
二、 分支结构
3.1 单向分支
if (条件表达式) {
语句;
语句;
}
3.2 双向分支
if (条件表达式) {
语句;
语句;
} else {
语句;
语句;
}
3.3 多向分支 else if
if (条件表达式) {
语句;
} else if (条件表达式) {
语句;
} else if (条件表达式) {
语句;
} else if (条件表达式) {
语句;
} else {
语句;
}
3.4 多向分支 switch case
switch (表达式) {
case 表达式可能的值:
语句;
语句;
break;
case 表达式可能的值: 语句; break;
case 表达式可能的值: 语句; break;
case 表达式可能的值: 语句; break;
case 表达式可能的值: 语句; break;
default: 语句;
}
break 的作用:
进入到 case 之后,执行语句,遇到 break 才停止,如果没有break会继续执行下面的 case,直到碰到 break。
3.5 嵌套分支
if (条件表达式) {
if (条件表达式) {
}
} else {
switch (表达式) {
case ...
}
}