以下のように文字列を数値に変換すると、副作用はありますか..
var numb=str*1;
以下のコードで確認すると、これは数値であることがわかります..
var str="123";
str=str*1;
if(!isNaN(str))
{
alert('Hello');
}
この方法を使用する上で懸念がある場合はお知らせください。
以下のように文字列を数値に変換すると、副作用はありますか..
var numb=str*1;
以下のコードで確認すると、これは数値であることがわかります..
var str="123";
str=str*1;
if(!isNaN(str))
{
alert('Hello');
}
この方法を使用する上で懸念がある場合はお知らせください。
parseFloat
、またはを使用するとparseInt
、変換は厳密ではなくなります。1b5
-> 1.
1*number
orを使用+number
して変換するとNaN
、入力が有効な数値でない場合に発生します。とは異なりparseInt
、浮動小数点数は正しく解析されます。
//Variables // parseInt parseFloat + 1* /1 ~~ |0 ^1 >>0 >>>0
var a = '123,',// 123 123 NaN 0 & <<0 0
b = '1.e3',// 1 1000 1000 1000 1000
c = '1.21',// 1 1.21 1.21 1 1
d = '0020',// 16 20 20 20 20
e = '0x10',// 16 0 16 16 16
f = '3e9', // 3 3000000000 <-- -1294967296 3000000000
g = '3e10',// 3 30000000000 <-- -64771072 4230196224
h = 3e25 ,// 3 3e+25 3e+25 0 0
i = '3e25',// 3 3e+25 3e+25 0 0
j = 'a123',// NaN NaN NaN 0 0
k = ' 1 ',// 1 1 1 1 1
l = ' ',// NaN NaN 0 0 0
m = '.1 ',// NaN 0.1 0.1 1 1
n = '1. ',// 1 1 1 1 1
o = '1e999',// 1 Infinity Infinity 0 0
p = '1e-999',// 1 0 0 0 0
q = false ,// NaN NaN 0 0 0
r = void 0,// NaN NaN NaN 0 0
_ = function(){return 1;}, /* Function _ used below */
s={valueOf:_},//NaN NaN 1 1 1
t={toString:_};// 1 1 1 1 1
// Intervals: (-1e+20, +1e20) (-∞,+∞) (-∞,+∞) (-2³¹,+2³¹) [0, 2³²)
// In FF9 and Chrome 17, Infinity === Math.pow(2, 1024), approx. 1.7976e+308
// In FF9 and Chrome 17, bitwise operators always return 0 after about ±1e+25
parseInt
最初の引数の整数表現を返します。基数 (2 番目の引数) を省略した場合、基数は指定された入力に依存します。0_
= 8 進数 (基数 8)、0x_
= 16 進数 (基数 16)。デフォルト: base-10。parseInt
引数が実際に数値だったとしても、数字以外の文字は無視されます: h, iを参照してください。parseInt(number, 10)
です。parseFloat
最も寛容なコンバーターです。プレフィックスに関係なく、常に入力を base-10 として解釈します ( とは異なりparseInt
ます)。正確な解析規則については、こちらを参照してください。
1.e+0 .1e-1
)+n, 1*n, n*1, n/1
とNumber(n)
同等です。~~n, 0|n, n|0, n^1, 1^n, n&n, n<<0
とn>>0
同等です。これらは符号付きのビット演算であり、常に数値 ( ではなくゼロNaN
) を返します。n>>>0
もビット演算ですが、符号ビットは予約されません。したがって、正の数のみを表すことができ、上限は 2 31ではなく2 32です。
parseFloat
とparseInt
、メソッドのみが表示されます.toString()
。他のメソッドは、最初に を探し.valueOf()
、次にを探します.toString()
。q - tを参照してください。
NaN
、「数字ではありません」: typeof NaN === 'number'
NaN !== NaN
. この厄介さのためisNaN()
、値が であるかどうかを確認するために使用しますNaN
。parseFloat( x )
(特定の文字列に対して)できるだけ多くの数値結果を取得したい場合。parseFloat( (x+'').replace(/^[^0-9.-]+/,'') )
さらに数値的な結果が必要な場合。parseInt( x, 10 )
整数を取得したい場合。+x, 1*x ..
オブジェクトの真の数値を取得することのみに関心があり、無効な数値を拒否する場合 ( as NaN
)。~~, 0| ..
常に数値の結果を取得する場合 (無効の場合はゼロ)。>>>0
負の数が存在しない場合。特定のパラメーターが実数であるかどうかをテストする最短の方法は、この回答で説明されています。
function isNumber(n) {
return typeof n == 'number' && !isNaN(n - n);
}