Javascript while循环计算

时间:2012-03-06 04:52:43

标签: javascript while-loop infinite-loop

如果我是你,我不会这样做:

使用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?

2 个答案:

答案 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%1c%做什么,但任何整数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));