之所以要把逻辑表达式和条件语句放一块写一下,完全是因为二者的联系太过紧密,逻辑运算产生布尔值的结果,而条件语句则根据布尔值决定走那个分支。

逻辑与: &&

首先逻辑与有逻辑与运算功能,即对由它连接的两端做逻辑运算,只要有一端结果为假,整个表达式的结果为假。

其次逻辑与 两边连接两个值的时候,只要有一个值为假值,整个表达式的结果是这个假值。

最后是开关作用,可以代替简单的if语句,eg:

a && c();

假定a是某个变量,c为某一函数,当且仅当a可以转换为true的时候c才会执行;

逻辑或: ||

首先是逻辑或运算,被连接的两端如果一端为真,整个表达式结果为真,

然后逻辑或链接两个值得时候,只要有一个值为真值,整个表达式的结果就是这个真值,

最后也是开关作用, 同上 a || c();a为假的时候,c才会执行。

应用:es6之前函数参数的默认值设置,dom api兼容,比如: 时间参数,样式计算函数,太多了。

逻辑非:

对操作数的布尔值求反,单目运算符,具体运算过程是先将操作值转换为布尔值之后对这个布尔值求反,

应用:

可以很方便的检测一个值转换为布尔值是真是假:eg. !!s ,即为s转换为布尔值之后的值;

坑:!的优先级是非常高的,所以尤其注意一些逻辑运算符连接在一起的时候运算顺序。

条件语句:

if(expression):

if通过计算expression的值得结果是否为true,决定是否执行后边的语句,有大括号的时候执行整个代码段,没有大括号的时候只执行接下来的一句代码;

else:

执行if里expression计算为假的时候的语句,

else if

多分支的解决方案之一,关于if和else多提一句就是如果判断条件很多的时候尽量搞清楚逻辑运算之间的关系,否则很容易产生bug。

switch:

多分支的解决方案之一,基本语法:

switch ( expression ){
case n :
      expression;
        break;
default:
break;
}

根据expression的计算结果决定走哪条case语句,break不是必须得,但是是非写不可的,除了被2流程序猿嘲笑为不懂代码之外,极有可能会产生bug,因为当你的case语句已经匹配之后,他肯定会执行他的这块代码,但假设此时没有break的话,他就会执行下面case里边的语句,so,bug就这么产生了;但是也有一个好处!就是switch里expression有多个分支,但是某几个要执行的操作一样的话,你就可以连续写几个case之后再写操作语句了,的确很方便。

switch最后一般会跟一个default语句,用来处理,当所有的case都不匹配时的缺省操作,非必须,不写的话代码不怎么严谨。

简洁玩法:

可以用 && 运算符模拟简单的if语句;比方

c && c++; or typeof(c) == 'number' && c ++

当然还有一个条件运算符叫三元运算符,示例:条件?为真执行我:为假执行我;并且三元运算符是可以嵌套的噢!当然写的时候就注意换个行什么的了,不然代码不美观。

附录:

js的假值:

数值类型里边0,NaN,

还有布尔类型里边的false,

字符串:‘’,

null,undefined,

除此之外其他值都为真值了

js回忆录(2) -- 逻辑表达式,条件语句的更多相关文章

  1. js中的条件语句

    //js中的条件语句 ; //example1 单分支语句 ){ console.log("你已经不年轻了!"); }else{ console.log("你依然很有活力 ...

  2. js中的运算符和条件语句

    js中的运算符大体上可以分为4类:1算术运算符.2一元操作符.3比较运算符.4逻辑运算符. 算术运算符一般指的是加减乘除求余这五种操作符:+,-,*,/,%.通过算术运算符可以对js中的变量进行操作. ...

  3. JS一周游~(基础、运算符、条件语句)

    一.基础篇 JavaScript 基于浏览器(客户端).基于(面向)对象{没有继承}.事件驱动(要有对象).脚本语言(灵活多变) 1.作用 表单的验证,减轻服务端的压力 添加页面动画效果 动态更改页面 ...

  4. js 1.变量提升 2.条件语句 3.循环语句 4.加号+的使用

    1.变量提升 变量提升是浏览器的一个功能,在运行js 代码执行前,浏览器会给js一个全局作用域叫 window,window 分两个模块,一个叫运营模块,内存模块找到当前作用域下的所有带var和fun ...

  5. 优化 JS 条件语句的 5 个技巧

    优化 JS 条件语句的 5 个技巧 原创: 前端大全 前端大全 昨天 (给前端大全加星标,提升前端技能) 编译:伯乐在线/Mr.Dcheng http://blog.jobbole.com/11467 ...

  6. 笔记二:JS的输出、语法、语句、字符串、条件语句、switch语句、for循环、while循环

    1.JS的输出: 注意:JS没有任何打印或者输出的函数 JS输出数据的集中方法:  1.使用window.alert()弹出警告框: 2.使用document.write()方法将内容写到HTML文档 ...

  7. vue使用案例,vue初始化,vue初始化方法,vue条件语句,vue在js里面添加元素调用vue方法

     <div id="main" > <button id='but1' type="button" v-on:click="save ...

  8. js 中的流程控制-条件语句

    条件语句: if(exp)执行一句代码 <script> var x = 1 ; if(x == 1 ) //当if判断语句结果是true 或者 false 当判断结果等于true的时候, ...

  9. JS 优化条件语句的5个技巧

    前言 在使用 JavaScript 的时候,有时我们会处理大量条件语句,这里有5个技巧帮助我们编写更简洁的条件语句. 一.对多个条件使用 Array.includes 例子: function con ...

  10. js之语句(条件语句,循环语句,跳转语句)

    一.条件语句 1.if语句 条件语句是通过判断指定表达式的值来决定执行还是跳过某些语句,这些语句是代码是“决策点”有时称之为“分支”. if语句是一种基本的控制语句,它让Javascript程序可以选 ...

随机推荐

  1. Qt编写地图综合应用53-省市轮廓图下载

    一.前言 Qt的浏览器控件的交互机制非常方便,所以在在线地图的时候可以对每个区域的经纬度坐标集合发给Qt程序,让他去存储到文件,在实际的测试过程中,发现有部分地图有多个封闭的曲线的,比如散落的岛屿和飞 ...

  2. Linux 下挂载群晖 NAS 硬盘拓展空间(NFS)

    在群晖 NAS 上配置 开启 NFS 服务 打开群晖的 设置 - 文件服务 - NFS,把 NFS 服务勾选上,协议选最新即可. 配置文件夹的 NFS 权限 在 设置 - 共享文件夹 下,选择需要开启 ...

  3. Github配置SSH避免远程提交重复输入用户名密码

    一. 前言 Logon failed, use ctrl+c to cancel basic credential prompt. 是不是提交会遇到上述错误,每次远程提交至Github需要重新输入用户 ...

  4. 开源的分布式事务解决方案-Seata

    Seata 是什么? (1)Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务. (2)在 Seata 开源之前,Seata 对应的内部版本在阿里经济 ...

  5. linux基础知识(基本认知、操作命令、常用技巧)

    文章目录 Linux基本认知 容量大小 自动补全命令或文件(夹) 复用之前的命令 Linux文件系统 Linux中命令和执行程序长什么样子 执行过的历史命令的记录文件的位置 linux的隐藏文件 Li ...

  6. nginx平台初探-1

    初探nginx架构(100%) 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧. nginx在启动后,在un ...

  7. css笔记详解

    css讲解  首先在我们学习css之前先来思考一个问题,为什么html标签上不直接改变样式,而要将文档结构和样式分离,分别用html和css来表示呢? 其实我个人认为这样分离带来的好处明显,我总结了几 ...

  8. 【java提高】---细则(2)

    TreeSet(一) 一.TreeSet定义:      与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的.            1)TreeSet类概述 ...

  9. Robot Framework 自动化测试部署常见问题及处理方法(二)

    书接上文 4.使用Open Browser关键字打开浏览器报错"WebDriverException: Message: 'geckodriver' executable needs to ...

  10. uni-app发布体验版本后授权登录很卡

    今天uni-app发布了一个体验版本, 但是我发现扫码登录后: 非常的卡顿在授权登录的时候: 但是在我的模拟器开发的时候, 是非常的流畅的. 没有一点儿的卡顿: 在真机上预览的时候也是非常的流畅的: ...