web-dev-qa-db-ja.com

.toLowerCaseが機能しない、交換機能?

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

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

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

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

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

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

.toLowerCase関数は文字列にのみ存在します。 javascriptの任意のものに対してtoString()を呼び出して、文字列表現を取得できます。これをすべてまとめると:

var ans = 334;
var temp = ans.toString().toLowerCase();
alert(temp);
96
spender

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

"toLowerCase" in Number.prototype; // false
6
0x499602D2

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

これがmakeLowerCase関数です。 :)

function makeLowerCase(value) {
  return value.toString().toLowerCase();
}
6
Guffa
var ans = 334 + '';
var temp = ans.toLowerCase();
alert(temp);
4
Joe Coder

これは数字であり、文字列ではありません。数字には最初から大文字と小文字が区別されないため、数字にはtoLowerCase()関数がありません。

エラーなしで関数を実行するには、文字列で実行します。

var ans = "334";

もちろん、出力は入力と同じになります。前述のように、最初は数字に大文字と小文字の区別がないためです。

3
Quentin