Javascript函数打破整个程序?

时间:2012-12-08 11:17:20

标签: javascript function while-loop

我编写了一个程序,只要按下按钮,它就会弹出警报框。问题是,我的一个功能是非常奇怪,我无法弄清楚原因。有时功能不起作用,有时它完全阻止程序发送其他功能负责的警报。我正在尝试使用的语法有什么问题吗?我尝试了很多变化......

这个简单的事情有效:

function popup(){
      alert(5+6);
};

这不是:

function popup(){
            c = 0;
                if(c=0){
                    alert(5+6);
                }
};

这可以防止整个程序运行:

    function popup(){
        x=0
        y=0
        while(x=0;x<array.length;x++)
            if(y>0){
                alert(5+6);
            }
            else(y=0){
                alert(1+2)
                y++
            }
    };

2 个答案:

答案 0 :(得分:3)

你可能意味着

else if (y==0){

而不是

else(y=0){

y=0将y设置为0并始终返回0,无论y之前是什么值。

while将一个语句作为条件(参见reference)。你的while循环可能正在检查x ++的结果,所以它永远不会结束。

你应该有一个for循环。

在进入测试值的循环之前将y设置为0非常奇怪。我想你应该是array[x]

function popup(){
    for (x=0; x<array.length; x++) {
        var y = array[x]; // just a guess, but this seems reasonnable
        if (y>0){
            alert(5+6);
        } else if (y==0) {
            alert(1+2);
            y++;
        }
};

但是正确地添加所有;和格式化/缩进你的代码可能会避免你很多麻烦。

我建议坚持Google's javascript style guidelines

答案 1 :(得分:3)

我想你想在这里做一个for循环。

如果(y = 0)进行分配,而不是比较。

else(y = 0){应该是“else if”。 “否则如果”进行比较,其中as - 如果前面的“if”子句为假,则变为true。

您的数组似乎未初始化? - 或者这是否已提前初始化?

我认为这更接近你想要的东西?:

function popup() {
    y = 0;
    for (var x = 0; x < array.length; x++) {
        if (y > 0) {
            alert(5 + 6);
        }
        else if (y == 0)
        {
            alert(1 + 2);
            y++;
        }
    }
}