各位战友,早上好。
今天是我们的第11课,这节课我们要学习一个好玩且常用的东西。叫做逻辑运算符。
逻辑运算符只有三种:&&,||,!,在数学里对应:与,或,非,英语里面对应:and,or,not
为了简单地学习这个东西,我们打开小程序开发工具,新建一个项目。
我们打开调试器
找到console面板,在这里我们可以肆无忌惮地写一些代码,按回车就会立刻运行。
比如我们可以定义个变量
let age = 25按下回车之后出现了行提示,undefined,这个东西是灰色的,不用管
我们之前学习过比较运算符
我们可以直接在这里使用,比如
age > 18然后就出现了行提示,true
这就是直接执行了,告诉我们age > 18的结果是true
我们再进行一个比较
age < 20然后就出现了行提示,false
我们再定义一个变量
let name = '张三'我们再做一个比较
name === '张三'然后就出现了行提示,true
我们再做一个比较
name === '李四'然后就出现了行提示,false
我们还可以做不等于的比较
name !== '李四'然后就出现了行提示,true
我们还可以重新给变量赋值,但我们不能重新定义一个相同的变量,比如再定义一个name,会报错的
name = '李四'然后再进行判断
name === '李四'然后就出现了行提示,true
现在我们来试试,逻辑运算符
先试试&&
这个运算的意思是与的意思,也就是说运算符的操作数都要为true才能得到结果true ,也就是运算符左右两边都要为true最终的结果true,否则结果就是false
我们试试
true && true然后就出现了行提示,true
我们再试试
true && false然后就出现了行提示,false
false && true然后就出现了行提示,false
false && false然后就出现了行提示,false
这个&&运算符就好像是你家大门挂了两把锁,你拿了一把,你家人拿了一把,你们必须要同时拿出两把锁的正确钥匙才能开锁一样。如果拿错了一把,那么门是打不开的。
那么||这个运算符呢?这个运算的意思是,只要其中一个操作数的结果为true,那么最终的结果就是true
我们来试试
false || true然后就出现了行提示,true
true || false然后就出现了行提示,true
true || true然后就出现了行提示,true
false || false然后就出现了行提示,false
也就是说,这里就好像你家有两道进家的门,一个前门一个后门,只要有其中一道门的钥匙就可以打开。只有一种情况打不开,那就是前门和后门都没有钥匙。也就是
false && false还有一个逻辑 运算符是 !
这个运算符就有点意思了,它能把原本为true的操作数变成false,把原本为false的操作数变成true
我们试试
!true然后就出现了行提示,false
!false然后就出现了行提示,true
这个怎么理解呢?就是取相反的值,我想让你往东的时候,你往西走了,我想让你往西,你却往都东走了。
这些true和false都可以换成表达式,比如把之前的age,和name代入进来看看
比如
name === '李四' && age > 18然后就出现了行提示,false 因为此时,name不等于李四,因为有一个为false,那么整个结果就为false,不需要再去判断age是否大于18了。这叫做短路运算。
也就是说,我们只要能提前确定结果,那么我们就没有必要继续算下去。
我们还可以试试
name === '李四' || age > 18然后就出现了行提示,true
虽然name === ‘李四’ 为false,但是age > 18为true,所以最终结果为true
我们还可以试试 !
!(name === '李四') && age > 18然后就出现了行提示,true
这个是怎么计算的呢?
遇到括号优先计算括号内的表达式,所以括号内表达式结果为false,然后计算!运算,结果为true,然后计算age > 18,结果为true,最后计算&&结果为true
这里的计算过程是根据运算符优先级来决定的。
运算符优先级一般是符合我们数学认知的,你也可以打开下面这个链接查看详细的运算符优先级
运算符优先级
还有就是,我们的逻辑运算符也和加减乘除一样可以叠加很多个
比如
true && true || false && false || !true然后就出现了行提示,true
这里会优先算 ! ,然后再算&&,最后算||
计算! 之后应该是这样
true && true || false && false || false计算完&&之后应该是这样
true || false || false最后计算 || ,从左到右依次计算,true || false 结果为true 然后剩下true || false,所以最终结果为true
然后你还可以把true和false替换为具体的表达式
比如
name === '张三' && age > 18 || name === '李四' && age < 18 || age >20你可以计算一下,看看结果
然后这里还有很多可以测试的地方,你可以多试试几种情况,如果出现各种报错,你可以点击上方编译按钮,然后就可以从头来过了
反正记得要多敲,多试试,有问题随时问。
还记得我们上节课的作业吗?
如我要做一个1到100的累加器,当碰到30,60和80时就跳过不加,当加完90就终止循环。做完后截图发到群里
这个作业的答案在上节课的文章里,你答案,然后复制到小程序里
你可以看到下面这个函数里面用了多个if条件判断,你现在知道如何改进这个代码吗?
calculate: function () { let count = 0 for (let i = 1; i < 101; i++) { if (i === 30) { continue } if (i === 60) { continue } if (i === 80) { continue } count = i + count if (i === 90) { break } } wx.showModal({ title: count + '', showCancel: false }) }我们可以这么改进
calculate: function () { let count = 0 for (let i = 1; i < 101; i++) { if (i === 30 || i === 60 || i === 80) { continue } count = i + count if (i === 90) { break } } wx.showModal({ title: count + '', showCancel: false }) }做一个1到100的累加器,当碰到大于20且小于30的数就不加,当碰到70,80时不加,当加完90就终止循环。做完后把可以把效果图发到群里,最好是附带关键代码截图