Ada*_*dam 59 javascript negative-number
我想检查一个数字是否为负数.我正在寻找最简单的方法,所以一个预定义的javascript函数将是最好的,但我还没有找到任何东西,这是我到目前为止,但我不认为这是一个好方法:
function negative(number) {
if (number.match(/^-\d+$/)) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
pol*_*nts 288
您应该只使用此表达式,而不是编写一个函数来执行此检查:
(number < 0)
Run Code Online (Sandbox Code Playgroud)
Javascript将首先尝试将左侧转换为数字值,然后再检查它是否小于零,这似乎是您想要的.
行为for x < y
在§11.8.1TheLess-than Operator(<
)中指定,它使用§11.8.5抽象关系比较算法.
这种情况是有很多不同的如果两个x
和y
都是字符串,但由于右手边是已经在若干(number < 0)
,比较会尝试左侧转换为数字来进行数值比较.如果左侧无法转换为数字,则结果为false
.
请注意,与基于正则表达式的方法相比,这可能会产生不同的结果,但取决于您尝试做什么,它最终可能会做正确的事情.
"-0" < 0
是false
,这是与事实相一致-0 < 0
也是false
(参见:符号零)."-Infinity" < 0
是true
(无限被承认)"-1e0" < 0
是true
(接受科学记数法文字)"-0x1" < 0
是true
(接受十六进制文字)" -1 " < 0
是true
(允许某些形式的空格)对于上述每个示例,正则表达式方法将进行相反的评估(true
而不是false
反之亦然).
?:
还应该说这种形式的陈述:
if (someCondition) {
return valueForTrue;
} else {
return valueForFalse;
}
Run Code Online (Sandbox Code Playgroud)
可以重构使用三元/条件?:
运算符(第11.12节)来简单地:
return (someCondition) ? valueForTrue : valueForFalse;
Run Code Online (Sandbox Code Playgroud)
习惯用法?:
可以使代码更简洁和可读.
Javascript具有可以调用以执行各种类型转换的函数.
类似于以下内容:
if (someVariable) {
return true;
} else {
return false;
}
Run Code Online (Sandbox Code Playgroud)
可以使用?:
运算符重构为:
return (someVariable ? true : false);
Run Code Online (Sandbox Code Playgroud)
但您也可以进一步简化为:
return Boolean(someVariable);
Run Code Online (Sandbox Code Playgroud)
这Boolean
称为函数(第15.16.1节)来执行所需的类型转换.您可以类似地调用Number
函数(第15.17.1节)来执行转换为数字.
bch*_*rry 12
function negative(n) {
return n < 0;
}
Run Code Online (Sandbox Code Playgroud)
你的正则表达式应该适用于字符串数字,但这可能更快.(根据上述类似答案的评论编辑,+n
不需要转换.)
这是一个老问题,但是它有很多观点,因此我认为更新它很重要。
ECMAScript 6带了函数Math.sign()
,该函数返回数字的符号(如果为正数,则返回1;如果为负数,则返回-1);如果不是数字,则返回NaN。参考
您可以将其用作:
var number = 1;
if(Math.sign(number) === 1){
alert("I'm positive");
}else if(Math.sign(number) === -1){
alert("I'm negative");
}else{
alert("I'm not a number");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
142287 次 |
最近记录: |