Javascript 为什么(x^0==x)输出x而不是真/假?

Javascript 为什么(x^0==x)输出x而不是真/假?,javascript,math,Javascript,Math,我在做一个测试变量是否是整数的练习x^0===x是建议的解决方案之一,但是当我在Chrome的控制台、codepen.io或这里尝试时,它返回x。为什么会这样 函数isInteger(x){ console.log(x^0==x); } isInteger(5); 伊森特格(124.124) isInteger(0)由于未在x^0周围添加(),您的病情评估错误: 函数isInteger(x){ console.log((x^0)==x); } isInteger(5); 伊森特格(124.1

我在做一个测试变量是否是整数的练习
x^0===x
是建议的解决方案之一,但是当我在Chrome的控制台、codepen.io或这里尝试时,它返回
x
。为什么会这样

函数isInteger(x){
console.log(x^0==x);
}
isInteger(5);
伊森特格(124.124)

isInteger(0)由于未在
x^0
周围添加
()
,您的病情评估错误:

函数isInteger(x){
console.log((x^0)==x);
}
isInteger(5);
伊森特格(124.124)

isInteger(0)虽然messerbill的答案解释了这个问题,但还有另一个问题。这不是一个好的使用方法:

函数isInteger(x){
console.log((x^0)==x);
}

isInteger(281474976710656)作为对所提供答案的补充,与问题相关的概念为“”。当我在JS中遇到此类问题时,我会去那个页面(不同的语言可能有稍微不同的运算符优先级,例如JS和JS中的求幂运算符
**

从答案中的例子来看:

(x ^ 0) === x
需要括号


不会。

发生在我们所有人身上xDI希望在新工作的编码测试前4小时不会发生在我身上'\_(ツ)_/“@Scott Beeson:至少在测试期间没有。我肯定你会这么做的。还没有被看到!我爱你。在做练习时,使用模数是第一件突然出现在我脑海中的事情,这就是我所使用的。当我看到潜在的解决方案时,我没有找到。我想这可能不是一个好主意。谢谢你的提醒传统的保证!(编辑:它在那里,只是错过了,但仍然…@ScottBeeson感谢你的链接-我将把这个发给我的兄弟,他现在也在学习js:D@ScottBeeson它是:
函数isInteger(x){return(typeof x=='number')&&(x%1==0);}
,虽然我已经假设我们只向函数传递数字输入。我想所有的赌注都没有了。顺便说一句,是在ECMAScript 6中引入的。不需要再重新发明轮子了。是的,只是一个练习:)
x % 1 === 0