我正在学习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));
我真的不知道出了什么问题,但是。也许我没有正确理解这个问题,所以如果社区里有人帮我解决这个问题,我会非常感激。
逻辑运算符的优先级:
- 不是:
- 比较运算符:===,>,<,>=<
- AND:&
- 或:||
如果我们将此优先级应用于"草莓和巧克力或stracciatella"这一语句,那么冰淇淋应该有此任务。
var iceCream = ((strawberry && chocolate) || stracciatella) || !caramel;
但答案并不正确。提示是…
你考虑过草莓和stracciatella吗?
这里有一个例子,它根据您所击败的结果返回true。但如果你愿意,我可以给你看一个功能,只需要冰的香水。
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)
首先,您说的"!=焦糖"不是一个逻辑运算符,而是一个比较运算符,因此"!=焦焦糖"在任务上下文中不起作用。
它应该是"&&!焦糖"。
此外,您没有为变量分配任何值,这将使表达式导致"未定义";试着给他们每个人一个值,比如"让巧克力=巧克力",或者一个布尔值,比如"让巧克力=真"one_answers"让焦糖=假"。
希望这能给你一些指导。
你可以在这里阅读更多关于逻辑运算符的信息:
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
(
所以在你的代码中你需要
- 为变量赋值(true/false(
- 将
!=
运算符更改为!
这是固定的代码,尝试通过更改味道的值来进行实验,看看会发生什么
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
,!
是NOT
,!=
是NOT EQUAL
等。通过查看它,我们会更清楚、更容易理解,因为python在这些语句中使用了最少量的符号,并允许这些操作的措辞与我们在说话时描述的一样。