运算符优先级
( ) → 单目(++ -- !) → 算术 → 关系 → 逻辑 → 条件 → 赋值 =
短路 现象(扩展)
当 true 遇到 || ,也就是 true || , || 右侧的表达式不执行
当 false 遇到 && ,也就是 false && , && 右侧的表达式不执行
数据类型转换
自动类型转换 (js代码运行时 进行的自动转换):
在进行算术运算或关系运算时,纯数字字符串会自动转成 数值
在进行算术运算时 , null 会自动转成0,undefined 会自动转成NaN
null + 9 ---> 9 undefined + 9 ---> NaN
强制类型转换 :
parseInt( ); 试图将某个字符串转成 整数 ,不能转换结果就是NaN “3a” "a3"-->NaN
parseFloat( ); 试图将某个字符串 转成 小数 ,不能正常转换的结果是 NaN
字母开头的不能转为整数或小数,可以识别尾部的字母
Number( ) ; 试图将某个类型转成 数值型 不能正常转换的结果是 NaN
true 为 1 false 为0 不能识别以字母开头或结尾
Boolean() 试图将某个类型转成布尔值
toString() 将某个类型转成字符串
如果括号中 加2 或8 或 16 就进行 进制转换
扩展方法 :
isNaN() 判断非数字
如果括号中是非数字,结果为true,否则结果就是false,
如果括号中是纯数字字符串,会自动转成数字
eval( ) 尝试将某个字符串转成表达式,并得到表达式的值
eval("2+3")或 var a = 10 ; eval("a+3")
程序三大结构 : 顺序 选择 循环
顺序 : 程序从上到下 不会跳过任何一条语句
选择 : 按照某个条件 选择性执行某段代码
循环 : 反复执行
选择结构 (出口只有一个)
控制语句 (单分支语句 一个条件) :
if(表达式){
语句1;
}else{
语句2;
}
说明 :
这里表达式 一般为 关系表达式
执行逻辑 :
如果表达式结果为真,就执行if语句,否则就执行else语句
控制语句 (多分支语句 多个条件)
if( 表达式1 ){
}else if( 表达式2 ){
}else if( 表达式3 ){
}else{
}
if总结的几个问题
1、if后面的语句如果只有一条, 花括号 可以省略的 不建议省略 else 后面也是同理
2、else 后面 一定没有表达式判断 else(){ } 错
3、else 是可以省略的
switch 开关语句
语法结构 :
switch( 表达式 ){
case 常量表达式 : 语句;
case 常量表达式 :语句;
...
default : 语句;
}
说明 :
1、表达式 一般是一个变量 或一个式子 ,但必须有一个具体的值
2、执行逻辑 : 用表达式的值和case后面的常量表达式做比较,如果有满足相等的case ,就自动执行该case及其后面的语句 这种现象叫做 case穿透
3、解决case穿透 : 在case语句后面加一个 break 中断
4、default 可以省略
5、switch 进行比较时 是全等比较 === 先比较类型再比较值
6、default位置可以移动到case前面
switch嵌套
switch( 表达式 ){
case 常量 :
switch(){
}
}
switch和if的使用场景
当条件是具体的值是,建议使用switch
当条件是一个范围 , 建议使用 if else if()