Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中的if-else语句在if语句执行后跳入else语句_Javascript_Dom Events - Fatal编程技术网

Javascript JS中的if-else语句在if语句执行后跳入else语句

Javascript JS中的if-else语句在if语句执行后跳入else语句,javascript,dom-events,Javascript,Dom Events,我有一个if-else语句: if (typeof (answers.QUEST122) === 'undefined') { answers.QUEST122 = '00'; } else { $scope.answers.QUEST122 = answers.QUEST122.substr(answers.QUEST122.length - 2); } 由于某些原因,当值未定义且answers.

我有一个if-else语句:

if (typeof (answers.QUEST122) === 'undefined') {
                    answers.QUEST122 = '00';
                }
else {
       $scope.answers.QUEST122 = answers.QUEST122.substr(answers.QUEST122.length - 2);
     }
由于某些原因,当值未定义且answers.QUEST122设置为“00”时,也会执行else语句,尽管没有理由执行它,因为该值未定义


这个if-else语句有什么错误吗?

它的工作原理与预期一样

var answers = {
  "QUEST122": undefined
};

if (typeof answers.QUEST122 === 'undefined') {
  answers.QUEST122 = '00';
} else {
  console.log('hi');
}

// => "00"

将其粘贴到浏览器的控制台中,您将看到它从不运行else块。我认为你的问题来自其他方面。鉴于您使用的是Angular,我会检查您的逻辑,看看$scope.QUEST112是否设置在其他任何地方。

此处效果良好,所以请尝试这样使用

typeof (answers.QUEST122) == 'undefined' ? answers.QUEST122 = '00' : $scope.answers.QUEST122 = answers.QUEST122.substr(answers.QUEST122.length - 2);

我想你必须检查对象的值。检查if-else语句没有问题

在这里做正确的事情:else不会运行。你确定在它将值设置为00后不会再次调用它吗?谢谢@Brian,很好的建议。通常,当我编辑时,一个不推荐的标签将自动替换为它的现代等价物,但我并不精通标签编辑。在这种情况下,我们可以为旧标签设置吗?好的@Brian,谢谢。我会尽力留意的。