这篇文章主要知识点是关于js、运算符、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书
js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:逻辑与&&、逻辑或||和逻辑非!。
当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规则如下:
1.&&
1.1两边条件都为true时,结果才为true;
1.2如果有一个为false,结果就为false;
1.3当第一个条件为false时,就不再判断后面的条件
注意:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果为false,返回的会是第一个为假的值。
2.||
2.1只要有一个条件为true时,结果就为true;
2.2当两个条件都为false时,结果才为false;
2.3当一个条件为true时,后面的条件不再判断
注意:当数值参与逻辑或运算时,结果为true,会返回第一个为真的值;如果结果为false,会返回第二个为假的值;
3.!
3.1当条件为false时,结果为true;反之亦然。
上代码说明:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> <script> console.log( 5 && 4 );//当结果为真时,返回第二个为真的值4 console.log( 0 && 4 );//当结果为假时,返回第一个为假的值0 console.log( 5 || 4 );//当结果为真时,返回第一个为真的值5 console.log( 0 || 0 );//当结果为假时,返回第二个为假的值0 console.log((3||2)&&(5||0));//5 console.log(!5);//false </script> </head> <body> </body> </html>
补充:逻辑与的优先级是高于逻辑或的;
比如console.log(3||2&&5||0),会先算2&&5的值为5,然后再3||5----3,最后再3||0----3,所以最终结果为3.
补充
表达式a && 表达式b : 计算表达式a(也可以是函数)的运算结果,
如果为 True, 执行表达式b(或函数),并返回b的结果;
如果为 False,返回a的结果;
表达式a || 表达式b : 计算表达式a(也可以是函数)的运算结果,
如果为 Fasle, 执行表达式b(或函数),并返回b的结果;
如果为 True,返回a的结果;
转换规则:
对象为true;
非零数字为true;
零为false;
非空字符串为true;
空字符串为法false;
其他为false;
例如:
var a = obj || " " ; //如果 obj 为空,a就赋值为 " " ;
var a = check() && do(); //如果check()返回为真,就执行do(),并将结果赋值给 a;
其他网友的补充
今天复习js继承的时候发现了一个问题,先上代码了
<script type="text/javascript"> window.onload = function () { var mama, mama1, test = function (name) { debugger; this.name = name || 'mama'; }; debugger; mama = new test(); mama1 = new test("mama1"); alert(mama.name);//name = mama alert(mama1.name);// name = mama1 } </script>
在执行构造函数的时候,无参的构造函数返回的name是'mama',有参数时,实例的name就是参数值了。
这个时候我就有点犯迷糊了,为什么逻辑运算符||能这么用呢?
由于是C#出身,所以对js ||这样用感觉很奇怪。
没辙,不懂先研究,实验实验就知道了。
var b, c, d; b = true || 0;//b=true; c = false || 0;//c=0; d = 1 || 0;//d=1;
换成别的呢?
var b, c, d; b = 1-1 || 1+1; //b=2 c = function () { return undefined } || function () { return 1};//c=function(); d = c();//d=undefined
var b, c, d; b = 1-1 || 1+1; //b=2 c = function () { return 1 } || function () { return undefined};//c=function(); d = c();//d=1
b = {} || { a: 1, getA: function () { return this.a}}; //b=object
var b, c, d; b = { a: 1, getA: function () { return this.a } } || {}; //b=object c = b.getA();//c=1;
通过这几个实验,可以看出,JS的||并不是像C#里面的||一样 单纯的返回一个布尔类型。
大家都知道js的布尔类型判定是对象是true,非零是true,非空字符串是true其余的都是false
由此得出
逻辑或 || : var a = 表达式1 || 表达式2
表达式1 表达式2 a取值
1 0 表达式1结果值
1 1 表达式1结果值
0 1 表达式2结果值
0 0 表达式2结果值
逻辑与 && : var a = 表达式1 && 表达式2
表达式1 表达式2 a取值
1 0 表达式2结果值
1 1 表达式2结果值
0 1 表达式1结果值
0 0 表达式1结果值
主要原因是因为短路,逻辑或 || 在前面有一个ture的时候则不看后面直接停止,逻辑与&&同理。
然后计算赋值和我们平时一样之获取最新的一次计算结果值。
例如
b = (1 + 1, 2 + 2, 3 + 3);//b=6;
嘛嘛,当然只是猜测。
以上仅供参考。萌新一只,望各位大佬轻批。
以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。
Copyright 2018-2020 www.xz577.com 码农之家
版权投诉 / 书籍推广 / 赞助:520161757@qq.com
详解js运算符单竖杠“|”与“||”的用法和作用介绍
在js开发应用中我们通常会碰到“|”与“||”了,那么在运算中“|”与“||”是什么意思呢? 在js整数操作的时候,相当于去除小数点,parseInt。在正数的时候相当于Math.floor(),负数的时候相当于Math.ceil() 注: 1. Math.ceil()用作向上取整。 2. Math.floor()用作向下取整。 3. Math.round() 我们数学中常用到的四舍五入取整。 console.log(0.6|0)//0console.log(1.1|0)//1console.log(3.65555|0)//3console.log(5.99999|0)//5console.log(-7.777|0)//-7 单竖杠的运算规则 看了上面的例子,大体知道单竖杠可以进行取整运算,就是只保留正数部分,小数部分通过拿掉,但是“|0”,又是如何进行运算的呢,为什么能“|0”能达到取整的目的呢?单竖杠不是0有会是多少呢? 带着这些问题,我们看下面例子: console.log(3|4); //7console.log(4|4);//4console.log(8|3);//11console.log(5.3|4.1);//5console.log(9|3455);//3455 这里面提到了单竖……
js运算符的一些特殊用法
本文集合了了js运算符的一些特殊应用。 js位运行符的运用。 js运算符的使用技巧。 是否包含指定字符: ~ ~"str1".indexOf("str2") str1 被查找的字符串 str2 查找的字符串 如果 str1 不含有 str2 ,则返回数字 0 。 例: var str1='abc';var str2='a';if(~str1.indexOf(str2)){ console.log('有'+str2) //有a}else{ console.log('无'+str2)} 取整: | num | 0 num 整数 例: 1.3 | 0 //1 取半: num 1 num 整数 例:求 50 的 1/2 50 1 //25 有除号 / 干嘛不用呢?多好呀: 50/2 //25 成长值评级: || 需求1: 成长值为5是1星; 成长值为10是2星; 成长值为12是3星; 成长值为15是4星; 其他都是0星。 ({'5':1,'10':2,'12':3,'15':4}[val] || 0); val 成长值。 判断奇偶: 1 num 整数 例: var num=3;if (num //num是奇数} else { console.log("num是偶数");} 交换两个数字的值: ^= 使用位运行符: var num1 = 1, num2 = 2;num1 ^= num2;num2 ^= num1;num1 ^= num2;console.log(num1……
vue.js使用(...)运算符报错的处理解决实例
今天在起别人项目的时候, 发现报错。 这个错误是,项目中不识别es6的扩展运算符, 解决方式很简单。 // 第一步cnpm install babel-plugin-transform-object-rest-spread // 第二步 看一下你的 .babelrc 里面是否有识别es6语法的配置 { presets: [ [env, { modules: false, targets: { browsers: [ 1%, last 2 versions, not ie = 8] } }], stage-2 ], presets: [ [es2015, { modules: false }] ], plugins: [transform-object-rest-spread]} 这两都做完,我发现又报错了。原因是你只配置了。但是没有下载es6的依赖项 只需要下载 cnpm install babel-preset-es2015 --save-dev 这样就ok了! 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。 ……
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
本文实例讲述了JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作。分享给大家供大家参考,具体如下: Js 中的运算符优先级 优先级依次降低 () !、-、++、– *、/、% +、- 、=、、= ==、!=、===、!==、 || ?: =、+=、-=、*=、/=、%= URL 编码和解码 encodeURIComponent() decodeURIComponent() encodeURI() decodeURI() escape() unescape() 区别 字符串操作常用API toString() 转换成字符串 charAt(index) 获取索引位置字符 charCodeAt(index) 获取索引位置字符在Unicode字符集中的编码值 indexOf(index) 从前向后获取索引字符串位置 ,找不到返回 -1 lastIndexOf(index) 从后向前获取索引字符串位置 ,找不到返回 -1 concat 连接字符,返回新组成的字符 slice(截取的位置,截取终点) 特殊说明: ① 左闭右开 ② slice(2) 截取从索引号为2的到最后 ③ slice(-2) 从右边开始往左边取2个 substr(截取的位置, 截取的……