JavaScriptで以下を実行するにはどうすればよいですか?
「1」、「2」、「3」を「123」に連結
「123」を123に変換
123 + 100 = 223を加算します
223を「223」に変換
JavaScriptで以下を実行するにはどうすればよいですか?
「1」、「2」、「3」を「123」に連結
「123」を123に変換
123 + 100 = 223を加算します
223を「223」に変換
回答:
parseInt()
およびに慣れる必要がありtoString()
ます。
また、ツールキットで役立つのは、変数を調べて、それがどのタイプかを調べることtypeof
です。
<script type="text/javascript">
/**
* print out the value and the type of the variable passed in
*/
function printWithType(val) {
document.write('<pre>');
document.write(val);
document.write(' ');
document.writeln(typeof val);
document.write('</pre>');
}
var a = "1", b = "2", c = "3", result;
// Step (1) Concatenate "1", "2", "3" into "123"
// - concatenation operator is just "+", as long
// as all the items are strings, this works
result = a + b + c;
printWithType(result); //123 string
// - If they were not strings you could do
result = a.toString() + b.toString() + c.toString();
printWithType(result); // 123 string
// Step (2) Convert "123" into 123
result = parseInt(result,10);
printWithType(result); // 123 number
// Step (3) Add 123 + 100 = 223
result = result + 100;
printWithType(result); // 223 number
// Step (4) Convert 223 into "223"
result = result.toString(); //
printWithType(result); // 223 string
// If you concatenate a number with a
// blank string, you get a string
result = result + "";
printWithType(result); //223 string
</script>
"1" + "2" + "3"
または
["1", "2", "3"].join("")
参加方法は、項目間の指定された区切り文字を入れ、文字列に配列のアイテムを連結します。この場合、「区切り文字」は空の文字列(""
)です。
parseInt("123")
ECMAScript 5以前は、基数10の基数を渡す必要がありました。parseInt("123", 10)
123 + 100
(223).toString()
(parseInt("1" + "2" + "3") + 100).toString()
または
(parseInt(["1", "2", "3"].join("")) + 100).toString()
r = ("1"+"2"+"3") // step1 | build string ==> "123"
r = +r // step2 | to number ==> 123
r = r+100 // step3 | +100 ==> 223
r = ""+r // step4 | to string ==> "223"
//in one line
r = ""+(+("1"+"2"+"3")+100);
JavaScriptのタイピングシステムにより、これらの質問は常に出てきます。人々は、数字の文字列を取得しているときに数字を取得していると思います。
JavaScriptが文字列と数値を処理する方法を利用するいくつかのことを次に示します。個人的には、JavaScriptが文字列連結に+以外の記号を使用したことを願っています。
ステップ(1)「1」、「2」、「3」を「123」に連結
result = "1" + "2" + "3";
ステップ(2)「123」を123に変換する
result = +"123";
ステップ(3)123 + 100 = 223を追加
result = 123 + 100;
ステップ(4)223を「223」に変換する
result = "" + 223;
これらが機能する理由を知っていれば、JavaScript式で問題が発生する可能性は低くなります。
あなたはこのようにそれを行うことができます:
// step 1
var one = "1" + "2" + "3"; // string value "123"
// step 2
var two = parseInt(one); // integer value 123
// step 3
var three = 123 + 100; // integer value 223
// step 4
var four = three.toString(); // string value "223"
0
は8進数(8進数)と見なされます。
0
と、その後含む8
または9
失敗し、0例:の復帰につながるparseInt('034') = 28
、とparseInt('09') = 0
。
以下は、JavaScriptを使用してトラブルを起こす方法の非常に苛立たしい例です。
あなただけを使用しようとすると parseInt()
して数値に変換し、別の数値を結果に追加と、2つの文字列が連結されます。
ただし、次の例に示すように、かっこ内に合計式を置くことで問題を解決できます。
結果:年齢の合計は98です。彼らの年齢合計は5048ではありません:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
var myFather = new Person("John", "Doe", "50", "blue");
var myMother = new Person("Sally", "Rally", 48, "green");
document.getElementById("demo").innerHTML = "Their age sum is: "+
(parseInt(myFather.age)+myMother.age)+"; Their age sum is NOT: " +
parseInt(myFather.age)+myMother.age;
</script>
</body>
</html>