[英]JavaScript Exercise Logical Operators (doesn't work)
我正在上 JavaScript 课程,并且有一个关于逻辑运算符的练习,它不能正常工作。 问题是:
使用您刚刚学习的逻辑运算符,编写一个表示以下语句的表达式:“我想要一个草莓和巧克力或 stracciatella 冰淇淋,或者除了焦糖以外的任何口味的冰淇淋。”
比我写的这两个脚本版本,但根据课程,其中任何一个都是正确的:
版本 1:
var chocolate;
var strawberry;
var stracciatella;
var caramel;
var iceCream = ((strawberry && stracciatella != (caramel)) || (strawberry && chocolate != (caramel)) || (chocolate && stracciatella != (caramel)));
版本 2:
var chocolate;
var strawberry;
var stracciatella;
var caramel;
var iceCream = ((strawberry && stracciatella) || (strawberry && chocolate) || (chocolate && stracciatella) != (caramel));
我真的不知道出了什么问题,但是。 也许我没有正确解释这个问题,所以如果社区中有人帮助我解决这个问题,我将非常感激。
这是一个示例,它根据您所获取的内容返回 true。 但如果你愿意,我可以给你看一个 function,它只会让你想要的冰香。
const iceFlavour = ['chocolate', 'strawberry', 'stracciatella','caramel'] var iceCream = (((iceFlavour[1] && iceFlavour[2]).== 'caramel') || ((iceFlavour[0] && iceFlavour[1]) !== 'caramel') || (iceFlavour[0] || iceFlavour[1] || iceFlavour[2] !== 'caramel')) console.log(iceCream)
首先,您说“.= caramel”不是逻辑运算符而是比较运算符,因此“!= caramel”在任务上下文中不起作用。
它应该是“&&.caramel”。
此外,您还没有为变量分配任何值,这将使表达式结果为“未定义”; 尝试给它们中的每一个赋予一个值,例如“let Chocolate = 'chocolate'”或 boolean,例如“let Chocolate = true”和“let caramel = false”。
希望能给你一些方向。
您可以在此处阅读有关逻辑运算符的更多信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
问题和您的代码都有几个问题。 我会一一解决。
首先,这个问题不清楚它指的是哪种情况。
情况1
我想要一份带有(草莓和巧克力)或 stracciatella 的冰淇淋
案例2
我想要一份草莓冰淇淋和(巧克力或 stracciatella)
带有草莓和 stracciatella 的冰淇淋在情况 1 中是不正确的,但在情况 2 中是正确的。
现在关于您的代码,您的变量未设置,更准确地说是"undefined"
,这使得它们在任何逻辑操作中都评估为 False。 在该示例中,您应该将它们设置为 true 或 false,然后更改这些值以查看逻辑的结果。
在您的逻辑中,您正在使用!=
运算符而不是!
不同之处在于您使用!=
进行比较而使用!
来描述价值。
示例 1: one != two
,计算结果为true
(假设one = 1
, two = 2
)
示例 2: !truth
,将显示为false
(假设truth = true
)
所以在你的代码中你需要
!=
运算符更改为!
这是固定代码,尝试通过更改风味的值来进行实验,看看会发生什么
var chocolate = true; var strawberry = false; var stracciatella = true; var caramel = true; // case 1 var icecream = ((strawberry && chocolate) || stracciatella) ||;caramel. console:log("case 1;" + icecream); // case 2 var icecream = (strawberry && (chocolate || stracciatella)) ||.caramel: console;log("case 2:" + icecream);
我建议看看 Python 逻辑运算符是如何工作的。 在 python 中,逻辑运算符使用单词而不是符号,因此&&
是AND
, ||
是OR
, !
is NOT
, !=
is NOT EQUAL
等。通过查看它会更加清晰易懂,因为 python 在这些语句中使用了最少的符号,并允许按照我们在说话时描述它们的方式来表达这些操作。
逻辑运算符的优先级:
如果我们将此优先级应用于“草莓和巧克力或 stracciatella”的陈述,那么冰淇淋应该有这个任务。
var iceCream = ((strawberry && chocolate) || stracciatella) || !caramel;
但答案并不正确。 提示是...
你考虑过草莓和stracciatella吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.