2016-05-24 1 views
-1

これは、文字列が数字に変換され、記号で操作されるために期待されるものです。なぜJavascriptのconsole.logは+記号で - 記号とコンカットを減算するのですか?

console.log('2' - '1') prints 1しかし、console.log('2' + '1')が実行されると、連結21であることが表示されます。誰かがこの動作の背後にある理由を説明することができますか?

+3

コンソールとは関係ありません.JS文字列連結の仕組みです。 'string + string = string'または' string + number = string'です。それに魔法はありません – charlietfl

+0

なぜdownvoteがありますか?それは有効な質問です。 – Araknid

答えて

4

2つの文字列がある場合は、それらを+と連結できます。これは珍しいことではないが、多くの言語がそうしている。

文字列には-演算子がありません。だからあなたがそれを使うとき、それは番号のためだけに働く既存の-演算子に戻ります。そして、Javascriptは文字列を自動的に数値に変換することで役立つようにしています。それは一般的ではありませんが、あなたがそれを期待していると思われるので、ここでは驚きません。

文字列(または文字列など)を数値に変換する場合は、+xを使用できます。いずれかが文字列の場合、連結を取得するため、両方を変換する必要があります。

console.log((+'2') + (+'1')); // logs 3 
+0

私は+を連結することを期待していましたが、そのようには動作しませんでしたが、今混乱は明らかです。 – Araknid

関連する問題