繁体   English   中英

如果另一个函数有错误,为什么 javascript 不会运行一个函数?

[英]Why won't javascript run one function if there is an error in the other function?

如果另一个函数出现错误,为什么一个 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 中的语法错误,我真的不想因为缺少等号而再次浏览代码。 我为 php 尝试了 eclipse,但它没有找到这个。

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

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

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

在这一点上,它发现了非法的 Javascript,最好的情况是解析器认为这是一个致命错误,最坏的情况是,解析器对您的代码的含义感到绝望,无法继续。 无论如何,这就是 Javascript 解析器的工作方式。 它在任何给定脚本中遇到第一个解析错误时停止。

加载该页面后,您的特定错误就会在 Javascript 控制台中显示给您。 您的第一道防线应该是关注调试控制台。 您应该定期观看,但只要有任何事情没有按预期工作,请务必查看。

在 Chrome 中,它会告诉你:

Uncaught ReferenceError: Invalid left-hand side in assignment

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

这个错误是因为一个数字不能被重新声明,因为一个数字总是同一个数字。 这会导致语法错误并影响代码的其余部分。 如果你试图让这个例子毫无问题地工作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM