JavaScript 练习逻辑运算符(不起作用)

JavaScript Exercise Logical Operators (doesn't work)

我正在学习 JavaScript 课程,其中有一个关于逻辑运算符的练习不正确。问题是:

Using the logical operators you just learned, write an expression that represents the following statement: "I would like an ice cream with strawberry and chocolate or stracciatella, or an ice cream of any flavour but caramel."

我已经写了这两个脚本版本,但根据课程,任何一个都是正确的:

版本 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));

我真的不知道出了什么问题但是。可能是我没理解对问题,如果社区里有人帮我解决这个问题,我将不胜感激。

这是一个 returns 正确的示例,基于您所输入的内容。但是如果你想要我可以给你展示一个只需要冰的香水的功能。

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”。

此外,您还没有为您的变量赋值,这将使 表达式结果为 "undefined";尝试给它们每个人一个值,如 "let chocolate = 'chocolate'" 或一个布尔值,如 "let chocolate = true" 和 "let caramel = false"。

希望能给你一些指导。

您可以在此处阅读有关逻辑运算符的更多信息:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

问题和您的代码都存在一些问题。我会一一解决的。

首先,问题不清楚它指的是哪个案例。

案例一

I would like an ice cream with (strawberry and chocolate) or stracciatella

案例二

I would like an ice cream with strawberry and (chocolate or stracciatella)

情况 1 中加草莓和 stracciatella 的冰淇淋是不正确的,但情况 2 中是正确的。

现在关于您的代码,您的变量未设置,更准确地说 "undefined" 这使得它们在任何逻辑操作中都被评估为 False。在该示例中,您似乎应该将它们设置为 true 或 false,然后更改这些值以查看您的逻辑结果。

在您的逻辑中,您使用的是 != 运算符而不仅仅是 ! 不同之处在于您使用 != 进行比较,而使用 ! 来描述值。

示例 1:one != two,计算结果为 true(假设 one = 1two = 2

示例 2:!truth,将显示 false(假设 truth = true

所以在你的代码中你需要

  • 为您的变量赋值(真/假)
  • 将您的 != 运算符更改为 !

这是固定代码,尝试通过更改 flavor 的值进行实验,看看会发生什么

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 在这些语句中使用了最少的符号,并允许这些操作措辞就像我们在说话时描述的那样。

逻辑运算符的优先级:

  1. 不是:!
  2. 比较运算符:===、>、<、>=、<=
  3. 并且:&&
  4. 或:||

如果我们将这个优先级应用到语句 "with strawberry and chocolate or stracciatella",那么 iceCream 应该有这个赋值。

var iceCream = ((strawberry && chocolate) || stracciatella) || !caramel;

但答案不正确。提示是...

Did you consider strawberry and stracciatella?