提问人:Greg 提问时间:7/30/2023 最后编辑:Greg 更新时间:7/30/2023 访问量:70
在 javascript 中检查变量是否初始化为数字的标准方法是什么?
What is the standard way to check a variable is initialised as a number in javascript?
问:
我正在尝试测试一个变量,以确保 [a] 它被初始化,[b] 并且在提供数字作为参数之前是一个数字。我尝试使用两个函数和.在测试变量是否为数字之前,确定变量是否已初始化是有意义的。但是,首先调用哪个函数几乎没有区别。第一个警报报告,而第二个警报不报告任何内容。在纯 javascript 中检查变量初始化为数字的标准方法是什么?noNil(i)
noNan(i)
undefined
例如
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];
答:
-1赞
Anmol Pal
7/30/2023
#1
试试这个:
var i;
if(!!i) {
console.log("undefined or null or (falsy) ");
}
else {
console.log("The value of i is ", i);
}
4赞
Alexander Nenashev
7/30/2023
#2
用于确定该值是否为 JS 数字类型。typeof i === '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));
}
评论
0赞
Greg
8/1/2023
亚历山大,这不仅提供了一种解决我眼前问题的方法,而且涵盖了我没有考虑过的问题的各个方面。非常感谢。
评论
var i
... ... ...只是让你知道这不是变量可以拥有的唯一名称......function x(i)
let i
i
i
i
const isNumber = n=> (+n===n);