javascript - 检查变量是否初始化为 JavaScript 中的数字的标准方法是什么?

标签 javascript html null nan

我正在尝试测试一个变量,以确保 [a] 它已初始化并且 [b] 是一个数字,然后再提供数字作为参数。我尝试使用两个函数 noNil(i)noNan(i) 来做到这一点。在测试变量是否为数字之前,先确定变量是否已初始化是有意义的。但首先调用哪个函数没有什么区别。第一个警报报告未定义,而第二个警报则没有报告任何内容。检查变量是否在纯 JavaScript 中初始化为数字的标准方法是什么?

例如

    var i;

    noNil();
    alert(i);
    noNaN(i);
    alert(i);

    function noNil(i) {
      if (i === undefined){
      let i = -1;
        return i;
      }
    }

    function noNan(i) {         
      if (isNaN(i)) {
      let i = 30;   
        return i;
      }
    }

澄清

一些背景信息可能会有所帮助。变量有 5 种定义方式; 0 到 4 从数组中选择颜色。如果未定义,则不会选择任何颜色。

    let family    = ["yellow", "red", "lime", "cyan","magenta"];
    ...
    ctx.fillStyle = family[i];

最佳答案

使用typeof i === 'number'判断该值是否为JS number类型。

const checkNumber = i => { if( typeof i !== 'number') throw new Error('Supplied argument is not a number!'); return i;};

function sum(a, b){
  return checkNumber(a) + checkNumber(b);
}

console.log(sum(2, 2));

var i;

console.log(sum(i, 2));

关于选择颜色的用例,您可以避免为数字烦恼:

let family    = ["yellow", "red", "lime", "cyan","magenta"];
family[i] && (ctx.fillStyle = family[i]);

但主要问题可能是为什么你最终得到的 i 不是颜色数组的正确索引的数字......

如果你想检查字符串,主题突然变得更加复杂(我什至没有涵盖这里的所有情况,例如科学记数法):

var i;

function isNumber(i) {
  return typeof i === 'number';
}

function isNumerish(i) {
  return !isNaN(parseFloat(i));
}

function isStringNumber(i) {
  return /^-?\d*\.?\d+$/.test(i);
}

const checks = [[i, isNumber], [-.5, isNumber], ['-.5a', isNumerish], ['-.5a', isStringNumber], ['-.5', isStringNumber]];

for(const [num, fn] of checks){
  console.log(num, fn.name, fn(num));
}

关于javascript - 检查变量是否初始化为 JavaScript 中的数字的标准方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76796883/

相关文章:

c - getsockname() c 没有设置值

java - 检查方法参数是否为空?

javascript - 如何获取 Firefox 调试器监视的目标元素?

javascript - Angular 7 - 错误错误 : Uncaught (in promise): TypeError: Cannot read property 'forEach' of undefined

javascript - 用新颜色叠加图像

javascript - 通过 <img>-tag 注入(inject) javascript

jquery - 在 Firefox 14.0.1 中使用 jQuery 获取 CSS 边框值

sql - 没有 WHERE 子句的 SELECT NOT NULL 值

javascript - 使用 Jquery 隐藏按钮的文本而不更改文本

html - 在测试服务器上摆脱网站页面底部的空白