javascript抛出并捕获不显示预期结果的错误

时间:2016-06-28 10:24:14

标签: javascript

我遇到了try,catch和throw i错误的问题。但结果我得到的是标记。这是代码。当我在表单字段中键入大于5的数字时,而不是显示太高的任何内容。当我输入的数字小于5时,它显示的太高,而不是太低。事实上,如果条件没有显示,大多数其他的。除了。空虚而且太高了。谁能解释一下这样的异常?

function myFunction() {
  var x, message;

  message = document.getElementById('para');
  message.innerHTML =  '';
  x = document.getElementById('formField').value;

  try {
    if (x == "") throw 'empty';

    if (x == NaN) throw 'not a number';

    x = Number(x);

    if (x < 5) throw 'too low';

    if (x > 5) throw  'too high';

  }
    catch(err){
    message.innerHTML = 'input is ' + err;
  }
}

你们中的许多人似乎都不明白我的问题,这段代码是W3schools的直接复制和粘贴。但它不能正常工作。当输入的值与if语句匹配时,各种if语句应该抛出某些错误。但它更像是一种脱节的结果。就像我只输入2个数字,而不是投掷输入太低,我投掷输入太高。当我输入的数字超过5时,它不会引发任何错误,并且对于NaN没有来自javascript的响应。

有没有人可以理解我们在说什么?我认为你实际上应该自己运行代码并请教我混淆的地方。

2 个答案:

答案 0 :(得分:0)

你应该使用isNan()而不是Nan。 参见示例here ...

这里有额外的背景: Why is IsNaN(x) different from x == NaN where x = NaN

答案 1 :(得分:0)

尝试在控制台中调试:

NaN === NaN

并且想知道:)其次,你的错误 - 你必须将x转换为int:

x = parseInt(document.getElementById('formField').value);