[英]Javascript negative number
我想檢查一個數字是否為負數。 我正在尋找最簡單的方法,因此預定義的 javascript 函數將是最好的,但我還沒有找到任何東西,這是我目前所擁有的,但我認為這不是一個好方法:
function negative(number) {
if (number.match(/^-\d+$/)) {
return true;
} else {
return false;
}
}
您應該能夠使用以下表達式,而不是編寫一個函數來執行此檢查:
(number < 0)
Javascript 將首先嘗試將左側轉換為數字值,然后檢查它是否小於零來評估此表達式,這似乎是您想要的。
x < y
的行為在§11.8.1 小於運算符 ( <
) 中指定,它使用§11.8.5 抽象關系比較算法。
如果x
和y
都是字符串,情況就會大不相同,但由於右側已經是(number < 0)
,因此比較將嘗試將左側轉換為要進行數字比較的數字。 如果左側無法轉換為數字,則結果為false
。
請注意,與基於正則表達式的方法相比,這可能會產生不同的結果,但取決於您嘗試做什么,它最終可能會做正確的事情。
"-0" < 0
為false
,這與-0 < 0
也是false
的事實一致(請參閱: signed zero )。"-Infinity" < 0
為true
(確認無窮大)"-1e0" < 0
為true
(接受科學記數法文字)"-0x1" < 0
為true
(接受十六進制文字)" -1 " < 0
為true
(某些形式的空格是允許的) 對於上面的每個示例,正則表達式方法的計算結果都是相反的( true
而不是false
,反之亦然)。
?:
還應該說這種形式的陳述:
if (someCondition) {
return valueForTrue;
} else {
return valueForFalse;
}
可以重構為使用三元/條件?:
運算符(第11.12 節)來簡單地:
return (someCondition) ? valueForTrue : valueForFalse;
?:
慣用用法可以使代碼更簡潔易讀。
Javascript 具有您可以調用以執行各種類型轉換的函數。
類似於以下內容:
if (someVariable) {
return true;
} else {
return false;
}
可以使用?:
運算符重構為:
return (someVariable ? true : false);
但您也可以進一步簡化為:
return Boolean(someVariable);
這將調用Boolean
作為函數(第15.16.1 節)來執行所需的類型轉換。 您可以類似地將Number
作為函數調用(第15.17.1 節)來執行到數字的轉換。
function negative(n) {
return n < 0;
}
您的正則表達式應該適用於字符串數字,但這可能更快。 (根據上述類似答案中的評論進行編輯,不需要使用+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");
}
像這樣簡單的事情怎么樣:
function negative(number){
return number < 0;
}
* 1
部分是將字符串轉換為數字。
在 ES6 中,您可以使用 Math.sign 函數來確定,
1. its +ve no
2. its -ve no
3. its zero (0)
4. its NaN
console.log(Math.sign(1)) // prints 1
console.log(Math.sign(-1)) // prints -1
console.log(Math.sign(0)) // prints 0
console.log(Math.sign("abcd")) // prints NaN
如果你真的想深入研究它,甚至需要區分-0
和0
,這里有一種方法可以做到。
function negative(number) {
return !Object.is(Math.abs(number), +number);
}
console.log(negative(-1)); // true
console.log(negative(1)); // false
console.log(negative(0)); // false
console.log(negative(-0)); // true
一個很好的方法也可以檢查正面和負面...
function ispositive(n){
return 1/(n*0)===1/0
}
console.log( ispositive(10) ) //true
console.log( ispositive(-10) ) //false
console.log( ispositive(0) ) //true
console.log( ispositive(-0) ) //false
本質上是將Infinity
與-Infinity
進行比較,因為0===-0// true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.