+的运算符优先级;Javascript和Java中的(串联)vs==
为什么输出是:+的运算符优先级;Javascript和Java中的(串联)vs==,javascript,Javascript,为什么输出是: let valueOne = 3; let valueTwo = "3"; if(valueOne==valueTwo) {console.log("same")} else {console.log("different")} console.log("valueOne==valueTwo: " + valueOne==valueTwo); 它甚至不打印字符串valueOne==valueTwo:。 然而,当添加额外的括号时,它将输出预期的结果 sa
let valueOne = 3;
let valueTwo = "3";
if(valueOne==valueTwo)
{console.log("same")}
else
{console.log("different")}
console.log("valueOne==valueTwo: " + valueOne==valueTwo);
它甚至不打印字符串valueOne==valueTwo:
。
然而,当添加额外的括号时,它将输出预期的结果
same
false
输出:
console.log("valueOne==valueTwo: " + (valueOne==valueTwo));
在javascript中,==
运算符的优先级似乎低于串联,
这与Java不同:
有人知道这里的设计问题吗
谢谢 将字符串和数字相加,并将其与第二个变量进行比较。使用字符串模板可以解决这个问题
让valueOne=3;
让valueTwo=“3”;
如果(valueOne==valueTwo)
{console.log(“相同”)}
其他的
{console.log(“不同”)}
log(`valueOne==valueTwo:${valueOne==valueTwo}`)代码>JavaScript和Java是两种完全不同的语言,在所有的语言中都不一样。实际的问题是什么?您已经正确地解释了为什么代码没有按照预期的方式运行,以及如何修复它。@RobinZigmond“有人知道这里的设计问题吗?”@RobinZigmond他们想知道,为什么JS中的运算符优先级是按这种方式设计的。实际上,在检查了指向OP中给出的Java运算符优先级的链接之后,在Java中,+
似乎也高于==
,这意味着这个问题是基于误解。
same
valueOne==valueTwo: true