我正在学习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));
我真的不知道出什么问题了,但是。也许我没有正确地解释这个问题,所以如果社区中有人帮助我解决这个问题,我将非常感激。
答案 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 = 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
,!
是NOT
,{ {1}}是!=
等。通过查看它,它变得更加清晰和易于理解,因为python在这些语句中使用了最少的符号,并允许这些操作的措辞与我们在描述它们时所用的措辞相同说话。
答案 3 :(得分:0)
使用逻辑运算符的优先级:
如果我们将此优先级应用于“草莓,巧克力或链球菌”的陈述,那么iceCream应该具有此赋值。
var iceCream = ((strawberry && chocolate) || stracciatella) || !caramel;
但是答案不正确。提示是...
您考虑过草莓和葡萄球菌吗?