如果我是你,我不会这样做:
使用Javascript:
(function() {
var a = 1,
b = a,
c = b,
d = 1,
e = 1;
while ( d != 0 && e != 0) {
b = Math.sqrt(a*a+a*a);
c = 2*a-b;
e = b%1;
f = c%1;
document.write(a);
a++;
}
document.write('a = ' + a);
document.write('b = ' + b);
document.write('c = ' + c);
})();
是的,基本上我想一遍又一遍地计算相同的等式,直到所有三个都是用Javascript整数然后打印出来。请知道,直到最近我才使用jQuery。
这似乎只是无限重复,虽然我觉得它在计算时不会打印a
很奇怪,不确定这是不是javascript while循环如何工作。
另外,为什么我不能用Math.sqrt(2a^2)
来计算B?
答案 0 :(得分:3)
Math.sqrt(2a^2)
不起作用,因为:
1)当您想要使用*
进行乘法时,您必须明确Javascript。 2a并不意味着2*a
2)^在Javascript中具有与取幂不同的含义。这意味着Bitwise XOR
这些在许多其他编程语言中也是如此。 Math.sqrt(2*a*a)
会对你有用。
您的循环不会退出,因为d != 0
始终为真,因为您永远不会将d
从其原始值1修改。
我不确定您要对b%1
和c%
做什么,但任何整数mod 1
都会给你0。
没有任何内容写入屏幕,因为您的循环不会停止执行,因此不会让Web浏览器有机会呈现任何内容。
答案 1 :(得分:3)
它永远不会结束,因为d
永远不会等于0.你将它初始化为1并且永远不会重新分配它。您还使用了未声明的变量f
。这应该是d
吗?
我还建议使用console.log
代替document.write
。它比DOM更频繁地刷新,并且通常具有更好的日志记录功能。查看WebKit Inspector(Safari和Chrome),Firebug(Firefox)或F12开发人员工具(IE)。
作为PaulP.R.O。指出,你所需的求幂语法是无效的JavaScript语法。如果您想:
,可以这样写b = Math.sqrt(2 * Math.pow(a, 2));