代码之家  ›  专栏  ›  技术社区  ›  Nail Val

当条件通过时,If语句不显示console.log,并按意外情况继续工作

  •  -1
  • Nail Val  · 技术社区  · 1 年前

    所以这里有一个简单的代码,使用普通的JavaScript。

    const button = document.getElementById('btn');
    const input = document.getElementById('amount');
    
    let list = [];
    
    button.addEventListener('click', () => {
    
        let num = +input.value;
    
        if (typeof num === 'number') {
            list.push(num);
            console.log(list);
        }
    
        else {
             console.log('Error. Try again and type in a number');
        }
    })
    

    为什么console.log语句没有显示在控制台中,而是将NaN值推送到列表中?

    我尝试使用else-if而不是仅使用else,并传递了以下条件:typeof num!=='数字

    1 回复  |  直到 1 年前
        1
  •  1
  •   Mikachu    1 年前

    评论基本上已经回答了,但我会尽力总结并向您解释。 在JavaScript中,字符串前的加号运算符, let num = +input.value; 就你而言,威尔 总是 将给定的字符串转换为数字,即使它无效。为了处理这个问题,JavaScript有 NaN ,代表 N ot N 有趣的是,number是一个数字。因此,要真正检查您的输入是否为数字,您必须使用 isNaN 作用

    const button = document.getElementById('btn');
    const input = document.getElementById('amount');
    
    let list = [];
    
    button.addEventListener('click', () => {
    
        let num = +input.value;
    
        if (!isNaN(num)) {
            list.push(num);
            console.log(list);
        } else {
             console.log('Error. Try again and type in a number');
        }
    })
    

    同样对于评论者,请不要否决这样的帖子。仅仅因为他们不立即理解一些东西,并不意味着这个职位应该被否决。