0

这个 if 语句不起作用。我希望它写“如果”,因为变量应该是空的。或者失败了,我会期待“其他”,但两者都没有

你也可以在JSFiddle上看到它完全没有工作的荣耀

我认为 JSFiddle 目前可能有问题

checkforthread();

function checkforthread() { // Check to see if it is a new or existing chat

// Set the variable
        var existingthread = "";

      document.write("test");

      if (typeof(existingthread) == 'undefined' || variable == null) {
            document.write("if");
            gotostage3();   
            }
          else {
            document.write("else");
            gotostage3();   
          }
}
4

3 回答 3

3

在 JavaScript 中,如果你尝试获取一个未定义符号的值,你会得到一个ReferenceError. 这就是这里发生的事情。variable是完全未定义的,因此尝试获取其值(以便您可以将其与 进行比较null)以 . 失败ReferenceError。您可以在浏览器的开发工具中看到这一点:

在此处输入图像描述

这会中止正在运行的脚本代码,因为它没有被捕获。

如果由于某种原因您需要检查是否定义了符号,有一种方法可以做到这一点:typeof您已经在使用的运算符:

if (typeof existingthread == 'undefined' || typeof variable == 'undefined') {

如果你应用typeof到一个你没有定义的符号,它不会抛出错误;相反,您会取回字符串"undefined"


请注意,这typeof是一个运算符,而不是一个函数;无需将其操作数括在括号中。

于 2013-10-25T22:08:33.383 回答
2

variableundefined,这与 JSFiddle 中显示的错误相同。

于 2013-10-25T22:07:04.423 回答
2

如果我假设您输入错误并且variable应该是existingthread,那么您做错的existingthread就是既不是undefinednull,它是一个空字符串!

如果我猜对了你想要达到的目标,你可以if通过说来简化你的条款。if (existingthread) { ... }

于 2013-10-25T22:10:17.427 回答