JavaScript练习逻辑运算符(无效)

时间:2019-11-15 13:10:20

标签: javascript logical-operators

我正在学习JavaScript课程,并且有一个关于逻辑运算符的练习无法正常工作。问题是:

  

使用您刚学到的逻辑运算符,编写一个表达式   代表以下陈述:“我想搭配   草莓和巧克力或西兰花,或任何冰淇淋   味道但焦糖。”

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

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

我真的不知道出什么问题了,但是。也许我没有正确地解释这个问题,所以如果社区中有人帮助我解决这个问题,我将非常感激。

4 个答案:

答案 0 :(得分:0)

这是一个根据您所输入内容返回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)

答案 1 :(得分:0)

首先,您说的是“!=焦糖”,它不是逻辑运算符,而是比较运算符,因此“!=焦糖”在任务上下文中不起作用。

应为“ &&!焦糖”。

此外,您尚未为变量分配任何值,这会使 表达式结果为“ undefined”;尝试给每个变量赋予一个值,例如“ let Chocolate ='chocolate'”或一个布尔值,例如“ let Chocolate = true”和“ let caramel = false”。

希望可以给您一些指导。

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

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

答案 2 :(得分:0)

问题和您的代码都有两个问题。我会一一解决。

首先,问题不清楚是指哪种情况。

案例1

  

我想要冰淇淋(草莓和巧克力)或链球菌

案例2

  

我想要草莓和(巧克力或曲霉菌)冰淇淋

在情况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!NOT,{ {1}}是!=等。通过查看它,它变得更加清晰和易于理解,因为python在这些语句中使用了最少的符号,并允许这些操作的措辞与我们在描述它们时所用的措辞相同说话。

答案 3 :(得分:0)

使用逻辑运算符的优先级:

  1. 不:!
  2. 比较运算符:===,>,<,> =,<=
  3. AND:&&
  4. OR:||

如果我们将此优先级应用于“草莓,巧克力或链球菌”的陈述,那么iceCream应该具有此赋值。

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

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

  

您考虑过草莓和葡萄球菌吗?