运算符
算数运算符、逻辑运算符、比较运算符、赋值运算符、位移运算符(进位补零)
逻辑运算符:短路与&&到达为false后面的不执行。短路或||到达为true后面的不执行
比较运算符:
- 出现NaN大部分都是false(!=)
- 任意类型和数值进行比较会被转为数值
- 字符串和字符串比较那么比较的是acsii码(从第一位开始比较 大写A 65 小写a 97)
表达式概念:
表达式是由对应的值(变量和运算符构成的式子)
算数表达式(返回对应的结果):由对应的算法运算符组成的式子
逻辑表达式(逻辑表达式):有对应的逻辑运算符组成的式子
条件表达式(返回Boolean类型的值):由对应的比较运算符组成的式子
三目运算符:
条件表达式?true的结果:false的结果
var result = 2>3?10:20
alert(result)
如果对应的他填写时对应的一个变量或者值,那么他会将这个值直接转为Boolean类型
var un
var a = un?'你好':'hello'
console.log(a)
执行顺序:
先算括号 再算 * / % 再 + - 再逻辑运算 再三目运算符 再赋值
控制语句
条件控制语句
if else(根据对应的boolean条件值来进行判断 也就是说你传入的条件返回的不是boolean 他会
转为对应的boolean类型)
if (条件表达式) {
对应满足条件执行的代码
} else {
不满足条件执行的代码
}
var number = prompt("请输入一个数值:")
if (number%2) {
console.log("当前输入数值为奇数")
} else {
console.log("当前输入数值为偶数")
}
多分支结构(else if)
多分支结构只有上面有一个满足了条件 下面的都将不会再运行
if (条件1) {
满足条件执行的代码
} else if(条件2){
满足条件执行的代码
}else{
所有条件都不满足执行的代码
}
if else的嵌套:
if else允许多层嵌套的
if(条件1){
if(子条件1){
满足子条件1执行的代码
}else if(子条件2){
满足子条件2执行的代码
}else{
不满足子条件执行的代码
}
}else{
不满足条件1执行的代码
}
if else 支持多层嵌套 一般我们的嵌套不会超过俩层
if else 一些简化操作:当你的if 块和或者else块只有一行代码的时候是可以省略{}的
if(1>2)
console.log('你好')
else if(2>3)
console.log('世界')
else
console.log('hello world')
switch case:
switch (值表达式) {
case 值1:
执行的代码
break;
case 值2:
执行的代码
break;
default:
上面都不满足执行的代码
}
var number = prompt()
switch (number) {
case '1':
console.log("睡觉")
break;
case '2':
console.log("吃饭")
break;
case '3':
console.log("打游戏")
break;
default:
console.log("活着")
}
switch支持多个值
var number = prompt()
switch (number) {
case '1':
console.log("睡觉")
break;
case '2':
console.log("吃饭")
break;
case '3':case'4':case '5':
console.log("打游戏")
break;
default:
console.log("活着")
}
switch支持嵌套
- switch 的值比对用到的是=== 必须要类型和值都一致
- 每个case块都是一个分支 如果没有break那么会进入下一个分支
- 多个分支可以执行一个操作
- break用于跳出switch块 那么后续的分支不再执行
- switch 不适用于范围内的比对
- default 默认的执行 上面都不满足的情况下执行
if else 和 switch的对比
if else常用于区间判断switch case用于值判断(枚举判断)
if else的效率低于switch case(用空间换时间)如果当前只有某个值的判断建议使用switch
if else只会进入第一个找到的满足条件的内容,后续的不执行
if else允许多层嵌套,但是建议嵌套层级不要超过两层(可读性 可维护性)
if里面的条件可以为表达式也可以为值,但是都会被强制转换为Boolean类型