javascript的逻辑运算符有哪些

广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

javascript的逻辑运算符有哪些

javascript的逻辑运算符有:1、逻辑与“&&”,只有两个操作数都为true时,才返回true;2、逻辑或“||”,如果两个操作数都为true,或其中一个为true,就返回true;3、逻辑非“!”,把操作数的值转换为布尔值,并取反。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

javascript中的逻辑运算符

逻辑运算符通常用来组合多个表达式,逻辑运算符的运算结果是一个布尔值,只能有两种结果,不是 true 就是 false。下表中列举了 JavaScript 中支持的逻辑运算符:

运算符名称示例&&逻辑与x && y 表示如果 x 和 y 都为真,则为真||逻辑或x || y 表示如果 x 或 y 有一个为真,则为真!逻辑非!x 表示如果 x 不为真,则为真

逻辑与运算

逻辑与运算(&&)是 AND 布尔操作。只有两个操作数都为 true 时,才返回 true,否则返回 false。具体描述如表所示。

逻辑与运算第一个操作数第二个操作数运算结果truetruetruetruefalsefalsefalsetruefalsefalsefalsefalse

逻辑与是一种短路逻辑,如果左侧表达式为 false,则直接短路返回结果,不再运算右侧表达式。运算逻辑如下:

第 1 步:计算第一个操作数(左侧表达式)的值。

第 2 步:检测第一个操作数的值。如果左侧表达式的值可转换为 false(如 null、undefined、NaN、0、""、false),那么就会结束运算,直接返回第一个操作数的值。

第 3 步:如果第一个操作数可以转换为 true,则计算第二个操作数(右侧表达式)的值。

第 4 步:返回第二个操作数的值。

示例1

下面代码利用逻辑与运算检测变量并进行初始化。

var user;  //定义变量(! user && console.log("没有赋值"));  //返回提示信息“没有赋值”
登录后复制

等效于:

var user;  //定义变量if (! user){  //条件判断    console.log("变量没有赋值");}
登录后复制

如果变量 user 的值为 0 或空字符串等假值转换为布尔值时,则为 false,那么当变量赋值之后,依然提示变量没有赋值。因此,在设计时必须确保逻辑与左侧的表达式返回值是一个可以预测的值。

var user = 0;  //定义并初始化变量(! user && console.log("变量没有赋值"));  //返回提示信息“变量没有赋值”
登录后复制

右侧表达式不应该包含赋值、递增、递减和函数调用等有效运算,因为当左侧表达式为 false 时,则直接跳过右侧表达式,会给后面的运算带来潜在影响。

逻辑或运算

逻辑或运算||是布尔 OR 操作。如果两个操作数都为 true,或者其中一个为 true,就返回 true,否则就返回 false。具体如图所示。

逻辑或运算第一个操作数第二个操作数运算结果truetruetruetruefalsetruefalsetruetruefalsefalsefalse

逻辑或也是一种短路逻辑,如果左侧表达式为 true,则直接短路返回结果,不再运算右侧表达式。运算逻辑如下:

第 1 步:计算第一个操作数(左侧表达式)的值。

第 2 步:检测第一个操作数的值。如果左侧表达式的值可转换为 true,那么就会结束运算,直接返回第一个操作数的值。

第 3 步:如果第一个操作数可以转换为 false,则计算第二个操作数(右侧表达式)的值。

第 4 步:返回第二个操作数的值。

示例2

针对下面 4 个表达式:

var n = 3;(n == 1) && console.log(1);(n == 2) && console.log(2);(n == 3) && console.log(3);( ! n ) && console.log("null");
登录后复制

可以使用逻辑或对其进行合并:

var n = 3;(n == 1) && console.log(1) || (n == 2) && console.log(2) || (n == 3) && console.log(3) || ( ! n ) && console.log("null");
登录后复制

由于&&运算符的优先级高于||运算符的优先级,所以不必使用小括号进行分组。不过使用小括号分组后,代码更容易阅读。

var n = 3;((n == 1) && console.log(1)) ||((n == 2) && console.log(2)) ||((n == 3) && console.log(3)) ||(( ! n ) && console.log("null")) ||
登录后复制

逻辑与和逻辑或运算符具有以下 2 个特点:

在逻辑运算过程中,临时把操作数转换为布尔值,然后根据布尔值决定下一步的操作,但是不会影响操作数的类型和最后返回结果。

受控于第一个操作数,可能不会执行第二个操作数。

逻辑非运算

逻辑非运算!是布尔取反操作(NOT)。作为一元运算符,直接放在操作数之前,把操作数的值转换为布尔值,然后取反并返回。

示例3

下面列举一些特殊操作数的逻辑非运算返回值。

console.log( ! {} );  //如果操作数是对象,则返回falseconsole.log( ! 0 );  //如果操作数是0,则返回trueconsole.log( ! (n = 5));  //如果操作数是非零的任何数字,则返回falseconsole.log( ! null );  //如果操作数是null,则返回trueconsole.log( ! NaN );  //如果操作数是NaN,则返回trueconsole.log( ! Infinity );  //如果操作数是Infinity,则返回falseconsole.log( ! ( - Infinity ));  //如果操作数是-Infinity,则返回falseconsole.log( ! undefined );  //如果操作数是undefined,则返回true
登录后复制

示例4

如果对操作数执行两次逻辑非运算操作,就相当于把操作数转换为布尔值。

console.log( ! 0 );  //返回trueconsole.log( ! ! 0 );  //返回false
登录后复制

逻辑与和逻辑或运算的返回值不必是布尔值,但是逻辑非运算的返回值一定是布尔值。

【推荐学习:javascript高级教程】

以上就是javascript的逻辑运算符有哪些的详细内容,更多请关注9543建站博客其它相关文章!

广告:SSL证书一年128.66元起,点击购买~~~

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:构成html代码的三个部分是什么
下一篇:uniapp轮播组件图片宽高怎么定义

发表评论

关闭广告
关闭广告