如果另一个函数出错,为什么javascript运行一个函数?

时间:2015-10-08 19:06:55

标签: javascript php

如果另一个函数出错,为什么不运行JavaScript函数?

我运行了这个html页面并尝试从popup1()函数加载警报,但由于popup2()函数的if语句中存在错误,因此无法正常工作:

<html>
<body>

<button onclick="popup1()"> Pop up 1 </button>
<button onclick="popup2()"> Pop up 2 </button>

<script>
function popup1()
{
    alert ("Pop up 1");
}

function popup2()
{
    if ( 1 = 1)
    {
        alert ("Pop up 2");
    }
}
</script>

</body>
</html>

当我将if语句更正为if(1 == 1)时,两个函数都有效。

为什么这会影响其他功能?

是否有任何可以推荐的免费软件会在我的JavaScript中发现语法错误,我真的不想因为缺少等号而再次浏览代码。我尝试了eclipse for php,但它没有设法找到它。

3 个答案:

答案 0 :(得分:3)

Javascript在阻止序列中运行,因此如果在任何地方出现任何错误,它将停止执行。

(假设您没有在错误发生之前启动的异步函数回调)

答案 1 :(得分:1)

代码行if ( 1 = 1)是Javascript中的解析错误。当您的代码无法正确解析时,Javascript解析器会立即停止解析您的代码,并且该脚本被认为有致命错误且未加载。

此时,它已经发现了非法的Javascript,并且最好解析器已经确定这是一个致命错误,最糟糕的是,解析器无可救药地混淆了您的代码意味着什么,无法继续。无论如何,这就是Javascript解析器的工作原理。它会在任何给定脚本中遇到的第一个解析错误时停止。

加载该页面后,您将在Javascript控制台中显示您的特定错误。您的第一道防线应该是关注调试控制台。你应该经常看它,但是如果一切都没有按照你的预期工作,总会看到那里。

在Chrome中,它会告诉你:

Uncaught ReferenceError: Invalid left-hand side in assignment

此外,您可以在代码上运行各种“lint”类型的程序,它不仅会告诉您错误,还会告诉您有关危险的做法。就个人而言,我使用http://jshint.com/,但有几个不同的程序提供此功能。

答案 2 :(得分:0)

此错误是因为数字不能重新声明,因为数字总是相同的数字。 这会导致语法错误并影响其余代码。如果你试图使这个例子没有问题。

function popup2()
    {
        var number = 1;
        if ( number = 1)
        {
            alert ("Pop up 2");
        }
    }