6

Infinity プロパティが (結果ではなく) コマンドとして使用される理由

たとえば、次のコードは機能しますが、結果は期待したものではありません。

alert(isOdd(Infinity));

function isOdd(num) { return num%2==1; }

4

2 に答える 2

7

MDN リファレンス

Infinity はグローバル オブジェクトのプロパティです。つまり、グローバル スコープの変数です。

Infinity の初期値は Number.POSITIVE_INFINITY です。Infinity (正の無限大) という値は、他のどの数値よりも大きくなります。この値は数学的に無限大のように振る舞います。たとえば、正の数に無限大を掛けたものは無限大であり、無限大で割ったものはすべて 0 です。

まずこれはどういう意味ですか?本質的に、無限は概念であり、実際の値ではありません。数学は、価値ではなく概念に基づいています。たとえば、数値は値ではなく、数値です。

数字の 7 は意図した値の概念であり、ローマ人はそれを VII と書き、標準形式 (BASE-10) では 7 と書きます。バイナリ (BASE-2) では 111 と書きます。コンセプトが正しく適用されている限り、三角形またはその他のマークでも問題ありません。

ご存知のように、無限大は、他のどの数よりも大きいという単純な概念です。価値はありません。無限ループの基本概念が永遠に実行されることを意味する唯一の理由は、概念上、そのループの数値反復 (1 か 100 万かを問わず) が常にその数値よりも大きくなることを意味するためです。

コーディングに概念を適用するには多くの方法があるため、コードの実行方法は人によって異なりますが、たとえば次のようになります。

w3schools からのサンプル:

function findMax(x) {
    var i;
    var max = -Infinity;
    for(i = 0; i < arguments.length; i++) {
        if (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
} 
document.getElementById("demo").innerHTML = findMax(1, 123, 500, 115, 44, 88);

サイトの例では、6 つの値の引数を関数 findMax findMax(1, 123, 500, 115, 44, 88); に渡します。

次に、ループを使用してパラメーターの長さで停止します。ループでは、無限の概念から値に最大値を再割り当てしています。再度ループしたときにその値よりも大きい場合、最大値は新しい高い値に変更されます。

何でこれが大切ですか?例では、負の無限大の概念を使用しています。これは、単に無限大の値を負に減少させたものです。0 は -Infinity を置き換えることができると簡単に主張できますが、それは間違いです。これが理由です。

値の範囲が、上記の式で渡される負の値に依存している場合はどうなるでしょうか? ユーザー入力または別の関数から動的にキャプチャされた負の値しかない場合はどうなるでしょうか?

findMax が findMax(-1, -10, -15, -20); だったとします。

0 は、それが正しい最大値であり、必要な値ではないという誤った出力を与えます。-1 one を出力にしたいでしょう。解決策を達成する方法は他にもありますが、Infinity の概念に関する議論のために、ここで終了します。

これにより、Infinity のコンセプトのプロセスがより明確になることを願っています。

于 2015-11-21T16:29:47.557 に答える
3

Infinity無限の数学的概念を表す数値を保持するグローバル オブジェクトのプロパティです。「コマンド」と呼べる通常の定義を私は知りません。

あなたの編集に関しては、それはfalseを返すはずです(この疑いを確認するために実行しましたが、私のブラウザではそうでした)。無限大は通常奇数とは見なされないため、これは正しいです。

于 2013-05-08T23:56:40.763 に答える