繁体   English   中英

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

[英]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 = 1two = 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 在这些语句中使用了最少的符号,并允许按照我们在说话时描述它们的方式来表达这些操作。

逻辑运算符的优先级:

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

如果我们将此优先级应用于“草莓和巧克力或 stracciatella”的陈述,那么冰淇淋应该有这个任务。

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

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

你考虑过草莓和stracciatella吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM