1. ホーム
  2. javascript

[解決済み] ある数字が負であるかどうかを調べるには?

2023-06-15 18:18:44

質問

ある数字が負であるかどうかを調べたい。私は検索している 最も簡単な方法 ということで、定義済みのJavaScript関数がベストだと思いますが、まだ何も見つかっていません。これは、私がこれまでに持っているものですが、私はこれが良い方法だとは思わない。

function negative(number) {
  if (number.match(/^-\d+$/)) {
    return true;
  } else {
    return false;
  }
}

どのように解決するのですか?

このチェックを行うための関数を書く代わりに、この式を使うことができればよいのです。

(number < 0)

Javascriptはこの式を、まず左辺を数値に変換してから0より小さいかどうかを確認することで評価します。これは、あなたが望んでいたことだと思われます。


仕様と詳細

の動作は x < y で指定されている §11.8.1 小さめの演算子( < ) を使用します。 §11.8.5 抽象的な関係比較のアルゴリズム .

の両方がある場合、状況は大きく異なります。 xy は文字列ですが、右辺はすでに数字なので (number < 0) であるため、比較は左辺を数値に変換して数値的に比較することを試みる。左辺を数値に変換できない場合、結果は false .

正規表現に基づくアプローチと比較すると、異なる結果が得られるかもしれないことに注意してください。しかし、何をしようとしているかによって、いずれにせよ正しいことをすることになるかもしれません。

  • "-0" < 0false という事実と矛盾しない。 -0 < 0 はまた false (を参照してください)。 符号付きゼロ ).
  • "-Infinity" < 0true (無限大を認める)
  • "-1e0" < 0true (科学的記数法のリテラルが使用できます)
  • "-0x1" < 0true (16進数のリテラルを受け付けます)
  • " -1 " < 0true (いくつかの形式の空白文字が許されます)

上記の例のそれぞれについて、regexメソッドは逆の評価をします( true ではなく false を使うこともできます。)

参考文献

参照


付録1 条件演算子 ?:

また、この形式のステートメントがあることは言うまでもありません。

if (someCondition) {
   return valueForTrue;
} else {
   return valueForFalse;
}

は、3項/条件付きで使用するようにリファクタリングすることができます。 ?: 演算子 ( §11.12 ) を使って単純に

return (someCondition) ? valueForTrue : valueForFalse;

のイディオム的な使い方 ?: は、コードをより簡潔で読みやすくすることができます。

関連する質問


付録 2: 型変換関数

Javascriptには、様々な型変換を行うために呼び出すことができる関数があります。

以下のようなものです。

if (someVariable) {
   return true;
} else {
   return false;
}

を使ってリファクタリングすることができます。 ?: 演算子を使って

return (someVariable ? true : false);

しかし、これをさらに簡略化して

return Boolean(someVariable);

これは Boolean を関数として呼び出します ( §15.16.1 ) を使って,望ましい型変換を行うことができます。同様に Number を関数として呼び出すこともできます ( §15.17.1 )を使って数値への変換を行うことができます。

関連する質問