小程序编程第11课

    技术2022-07-12  96

    各位战友,早上好。

    今天是我们的第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就终止循环。做完后把可以把效果图发到群里,最好是附带关键代码截图

    参考答案

    calculate: function () { let count = 0 for (let i = 1; i < 101; i++) { if (i > 20 && i < 30 || i === 70 || i === 80) { continue } count = i + count if (i === 90) { break } } wx.showModal({ title: count + '', showCancel: false }) }
    Processed: 0.010, SQL: 9