65

この.toLowerCaseメソッドを数値で使用しようとすると、エラーが発生します。これは私が持っているものです:

var ans = 334;
var temp = ans.toLowerCase();
alert(temp);

そして、それは私にこのエラーを与えます:

'undefined' is not a function (evaluating 'ans.toLowerCase()')

どこでこれを間違えたのかわかりません。私は常に、数値も解析でき、結果に変化はないと考えていました (おそらくそれが私が詰め込んだところです)。

しかし、それがエラーでない場合、誰かがカスタムmakeLowerCase関数を作成して、おそらく正規表現などを使用して文字列を小文字にすることができますか?

4

7 に答える 7

155

.toLowerCase()関数は文字列にのみ存在します。

.toString()JavaScript では、文字列表現を取得するために何でも呼び出すことができます。

これをすべてまとめると:

var ans = 334;
var temp = ans.toString().toLowerCase();
alert(temp);
于 2012-09-26T22:51:56.323 に答える
7

エラーではありません。Javascript は、文字列が必要な場合 (たとえばparseInt(42)) 数値を文字列に喜んで変換しますが、この場合、数値が文字列であることを期待するものは何もありません。

ここにmakeLowerCase関数があります。:)

function makeLowerCase(value) {
  return value.toString().toLowerCase();
}
于 2012-09-26T22:58:15.537 に答える
7

数値は、メソッドNumberを持たないコンストラクターから継承します。.toLowerCase実際のところ、それを調べることができます:

"toLowerCase" in Number.prototype; // false
于 2012-09-26T22:53:59.337 に答える
6
var ans = 334 + '';
var temp = ans.toLowerCase();
alert(temp);
于 2012-09-26T22:51:17.833 に答える
4

It is a number, not a string. Numbers don't have a toLowerCase() function because numbers do not have case in the first place.

To make the function run without error, run it on a string.

var ans = "334";

Of course, the output will be the same as the input since, as mentioned, numbers don't have case in the first place.

于 2012-09-26T22:50:17.527 に答える