2010-09-01 62 views
53

我有一些JavaScript代码:Javascript,^(插入符号)运算符是做什么的?

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#calcular').click(function() { 
    var altura2 = ((($('#ddl_altura').attr("value"))/100)^2); 
    var peso = $('#ddl_peso').attr("value"); 
    var resultado = Math.round(parseFloat(peso/altura2)*100)/100; 
    if (resultado > 0) { 
     $('#resultado').html(resultado); 
     $('#imc').show(); 
    }; 
    }); 
}); 
</script> 

什么是^(尖)运算符在Javascript中是什么意思?

回答

60

^ operator是按位异或运算符。方的值,使用Math.pow

var altura2 = Math.pow($('#ddl_altura').attr("value")/100, 2); 
+3

哪里类型是,他们几乎不存在那么松,我几乎感到惊讶,甚至有位操作:) – tenfour 2010-09-01 13:15:39

+1

我知道POW函数(欧莱雅网站管理员似乎没有......)但我无法找到^运算符的JavaScript。感谢您的链接! – Torres 2010-09-01 13:22:53

+1

好的,赶上!转发给我的西班牙朋友,他有点震惊。注意到例如200厘米/ 70公斤给你一个无限的BMI ;-) – Michael 2010-09-01 14:29:29

4

这是按位异或运算符。

29

^正在执行异或(XOR),例如

6是二进制1103是二进制011,和

6^3,意思是110 XOR 011给出101(5)。

110 since 0^0 => 0 
    011   0^1 => 1 
    ---   1^0 => 1 
    101   1^1 => 0 

Math.pow(x,2)计算但对于方你更好的使用x*x作为Math.pow使用对数,你会得到更多的近似误差。 (x² ~ exp(2.log(x))

+0

不知道对数事实!谢谢! (因此它可能也更快,不是吗?) – Michael 2010-09-01 14:34:13

+0

可能会更快(虽然数学处理器对于“双重”简单操作而言相当快 - 但在使用泰勒级数优化时,日志可能会变慢)。 – 2010-09-01 16:21:06

+0

不知道为什么Math.pow不只是使用x * x?! – Jowen 2014-04-22 12:02:52

0

它被称为按位异或。让我来解释一下:

您有:

Decimal Binary 
0   0 
1   01 
2   10 
3   11 

现在,我们希望3^2=? 那么我们有11^10=?

11 
10 
--- 
01 
--- 

所以十进制11^10=01 011

因此,我们可以说,3^2=1;

在如Javascript语言