运算符表达式及相关控制语句

运算符

算术运算符
+ - * / % ++ --
  • 除了加法的所有运算全部会先转为number再进行运算(Number)转换不成功出现NaN
  • 一个数值和NaN相加得到的也是一个NaN
  • 加法运算如果有一个值为字符串那么会进行字符串拼接
  • ++ 前置和后置 前置先执行++ 后置后执行++
  • ++不能放在() 之前
  • 运算对应的顺序 先执行()里的内容 再执行 ++或者--操作和对应的* / % 再执行+ -操作
逻辑运算符
&&  ||   !
  • 与(&&) 俩个都为true 取最后一个 有一个为false就取第一个false
  • 或(||) 有一个true就取第一个true 都为false就取最后一个false
  • 非(!)取反
比较运算符
> < >= <= != == === !==
  • 当出现的是> <号他会自动进行相关的转换(number)
  • 对应比较的都是字符串那么会比较对应的ascii码(A 65 a 97)
  • == 比较值 数值类型123和字符串123是相等的(NaN!=NaN)(undefined == null)
  • === 基于==之上 除了比较值还要比较类型 123!='123' (undefined !== null)
  • 当出现对应的! 对应的将原本的结果取反就可以了
赋值运算符
= += -= *= /= %=

赋值运算符的他是属于最后执行的(赋值操作是最后操作)

位移运算符(进位补零)
<<  >>

表达式概念

表达式是由对应的值(变量)和运算符构成的式子

  • 由对应的算法运算符组成的式子 算法表达式(返回对应的结果)
  • 由对应的逻辑运算符组成的式子 逻辑表达式 (返回对应的值)
  • 由对应的比较运算符组成的式子 条件表达式 (返回boolean类型的值)
三目运算符

条件表达式?true的结果:false的结果

/**
* 如果2大于3那么返回对应的10 如果不大于返回20
*/
var result = 2>3?10:20 
var un
//如果对应的他填写是对应的一个变量或者值 那么他会将这个值直接转换为boolean类型
var a = un?'你好':'hello'

执行顺序

var a = 100+20*50*0&&20+'hello'-12*8||undefined?(10+12)/10+10%2:(5+2)%2*15+16 //31

先算括号 再算* / % 再 + - 再逻辑运算 再三目运算符 再赋值

运算符 描述
. [] () 对象成员存取、数组下标、函数调用等
++ -- ~ ! delete new typeof void 一元运算符
*** / %** 乘法、除法、去模
+ - + 加法、减法、字符串连接
<< >> >>> 移位
< <= > >= instanceof 关系比较、检测类实例
== != === !== 恒等(全等)
& 位与
^ 位异或
| 位或
&& 逻辑与
|| 逻辑或
?: 三元条件
= x= 赋值、运算赋值
, 多重赋值、数组元素

控制语句

控制语句是对应程序的一个控制,他分为对应的条件控制语句和循环控制语句
条件控制语句是根据对应的条件来执行对应的代码,循环控制语句是根据对应的条件来执行多次重复的代码

条件控制语句

常见的控制语句
  • if else (根据对应的boolean条件值来进行判断 也就是说你传入的条件返回的不是boolean 他会转为对应的boolean类型)
  • switch case (根据对应的值来进行比对 里面采用的是=== 会自动进行比对)
if else讲解
if(条件表达式){
    对应满足条件执行的代码
}else{
    不满足条件执行的代码
}
//判断输入一个数值是奇数还是偶数
var number = prompt('请输入一个数值') //浏览器的一个弹窗 里面可以输入对应的内容 这个内容会返回给你 类型是字符串
// console.log(`number`, number);
// if(number%2==0){
//     console.log(`当前输入的是偶数`);
// }else{
//     console.log(`当前输入的是奇数`);
// }
//如果返回的值不是一个boolean类型的值 自动转为boolean类型
if(number%2){//如果为0就是false 
    console.log(`当前输入的是奇数`);
}else{
    console.log(`当前输入的是偶数`);
}
多分支结构(else if)

多分支结构只有上面有一个满足了条件 下面的都将不会再运行

if(条件1){
    满足条件执行的代码
}else if(条件二){
    满足条件执行的代码
}...
else{
    所有条件都不满足执行的代码
}
//判断输入一个数值是奇数还是偶数
var number = prompt('请输入一个数值') //浏览器的一个弹窗 里面可以输入对应的内容 这个内容会返回给你 类型是字符串
console.log(`number`, number);
// if(!(number%2) && number%2!=0){ //如果是NaN 不是0
//     console.log(`当前输入出错`);
// }else if(number%2==0){
//     console.log('当前是偶数');
// }else{
//     console.log('当前是奇数');
// }
// if(isNaN(number%2)){ //如果是NaN 
//     console.log(`当前输入出错`);
// }else if(number%2==0){
//     console.log('当前是偶数');
// }else{
//     console.log('当前是奇数');
// }
//利用NaN加任意数值得到都是NaN
if(!(number%2+Infinity)){ //如果是NaN
    console.log(`当前输入出错`);
}else if(number%2==0){
    console.log('当前是偶数');
}else{
    console.log('当前是奇数');
}
if else的嵌套

if else允许多层嵌套的

if(条件1){
    if(子条件1){
        满足子条件1执行的代码
        ...
    }else if(子条件2){
        满足子条件2执行的代码
    }else{
        不满足子条件执行的代码
    }
}else{
    不满足条件1执行的代码
}
//输入一个值判断奇偶
var number = prompt()
//判断是否输入出错
if(number == ''){
    console.log('输入内容不允许为空');
}else if(!isNaN(Number(number))){
    //当前不是NaN
    if(number%2==0){
        console.log('当前为偶数');
    }else{
        console.log('当前为奇数');
    }
}else{
    //当前是NaN的情况
    console.log('输入错误');
}

if else 支持多层嵌套 一般我们的嵌套不会超过俩层

if else 一些简化操作

当你的if 块和或者else块只有一行代码的时候是可以省略{}的

if(1>2)
    console.log('你好')
else if(2>3)
    console.log('世界')
else 
    console.log('hello world')

每句代码的结束是可以有分号 可以没有分号的 但是一般建议加上;(后续我们需要减少对应的编写的文件的大写我们会把所有的js在一行)

switch case
switch(值表达式){
    case 值1:
        执行的代码
        break;
    case 值2:
        执行的代码
        break;
    defulat:
        上面都不满足 执行的代码
}
//根据输入的值判断对应的执行的操作
// 1 打印游戏 2 打印睡觉 3 打印吃饭
var number = prompt() //字符串
//switch里面采用的是=== 类型必须相等
//在switch 如果没有break 他会从满足条件那句开始直到最后
//break 退出 当前这个switch不执行了
switch(number){
    case '1':
        console.log('游戏');
        break;
    case '2':
        console.log('睡觉');
        break;
    case '3':
        console.log('吃饭');
        break;
    default:
        console.log('活着');
}
switch支持多个值
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(1){
    case 1:
        switch(2){
            case 2:
                console.log('我是2');
                break;
            default:
                console.log('hello');
        }
        break;
    default:
        console.log('default');
}
if else 和switch的对比

if else 常用于区间判断 switch case用于值判断(枚举判断)
if else的效率低于switch case(用空间换时间)如果当前只有某个值的判断建议使用switch


总结

  • if else 是用于区间判断 switch case是用于值判断
  • switch case里面使用的判断是恒等判断 (支持所有类型的值)
  • if else 支持嵌套 switch case也支持嵌套 (一般建议不要嵌套俩层以上)
  • if 可以单独用
  • if 的多分枝采用 else if来实现
  • 对应的switch 里面的多分支采用多个case连用
  • if (else if 、else)后面的代码如果只有一行那么可以省略{} 但是我们一般不建议省略
  • if 里面的条件表达式返回的是对应的boolean类型的值 如果当前的式子不是条件表达式 他会自动转换boolean类型
  • if else的效率低于switch case(用空间换时间)如果当前只有某个值的判断建议使用switch(枚举上一般使用switch)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容