Javascript 空字符串检查计算结果错误

Javascript 空字符串检查计算结果错误,javascript,Javascript,我有一个检查空字符串的条件,它没有按预期计算空字符串 我一次读取一个字符的字符串: isNumber(s: string) { console.log('char', s); if (s !== '' && !isNaN(Number(s))) { console.log('is a number'); console.log('-------------'); return true; } console.log('NOT a numbe

我有一个检查空字符串的条件,它没有按预期计算空字符串

我一次读取一个字符的字符串:

isNumber(s: string) {
  console.log('char', s);
  if (s !== '' && !isNaN(Number(s))) {
    console.log('is a number');
    console.log('-------------');
    return true;
  }
  console.log('NOT a number');
  console.log('-------------');
}
从csv文件中读取字符串:

a,b,
c,d,e
第3列第1行为空,但if的计算结果为true,即使我有s!=,我已经用控制台确认字符为空。为什么空字符串条件不起作用

更新: 这会导致非空字符串吗?我用引号初始化变量,然后附加到它

cellExtraction = '';
cellExtraction += s; // <- where s should be an empty string read from file

表达式编号返回0,这是一个数字。自从s!==测试显然返回true,必须是s包含一个或多个空格字符的情况。这些也被数字函数转换为0;也就是说,Number也是0。

表达式Number返回0,这是一个数字。自从s!==测试显然返回true,必须是s包含一个或多个空格字符的情况。这些也被数字函数转换为0;也就是说,数字也是0。

console.log到底显示了什么?您确定它是空字符串还是有空格?如果s确实是空字符串,则表达式工作正常。因此,我们只能得出结论,事实并非如此。请注意,当s是包含零个或多个空格字符的字符串时,数字返回0,这是一个数字。它是一个没有任何空格的空字符串。实际上,13是\r-。换行符为\n,字符代码为10。您可以使用s.trim删除它和其他空白字符。console.log到底显示了什么?您确定它是空字符串还是有空白?如果s确实是空字符串,则表达式可以正常工作。因此,我们只能得出结论,事实并非如此。请注意,当s是包含零个或多个空格字符的字符串时,数字返回0,这是一个数字。它是一个没有任何空格的空字符串。实际上,13是\r-。换行符为\n,字符代码为10。您可以使用s.trim删除它和其他空白字符。查看控制台,它似乎是一个空字符串,在文件中它是空的,它不应该有任何空间。我不关心数字,也不知道为什么会有空格,如果没有,它是如何传递条件的。这是一个返回键,s.charCodeAt0=13,它在控制台中看起来像一个空字符串,所以我想我可以添加一个条件:s.charCodeAt0!=13@mattiscodings你可以这样做,或者只做s=s修剪;在测试删除前导空格和尾随空格之前。即使字符代码13是换行符,也可以这样做,所以我猜它会删除换行符to@mattiscodings空白类别不仅仅包括空格;制表符、换行符,可能是一些奇怪的Unicode空格之类的东西,等等。在控制台上,它看起来是一个空字符串,在文件中它是空的,它不应该有任何空格。我不关心数字,也不知道为什么会有空格,如果没有,它是如何传递条件的。这是一个返回键,s.charCodeAt0=13,它在控制台中看起来像一个空字符串,所以我想我可以添加一个条件:s.charCodeAt0!=13@mattiscodings你可以这样做,或者只做s=s修剪;在测试删除前导空格和尾随空格之前。即使字符代码13是换行符,也可以这样做,所以我猜它会删除换行符to@mattiscodings空白类别不仅仅包括空格;标签,换行符,可能是一些奇怪的Unicode空间之类的东西,等等