1. JavaScript入門講座
  2. 文字列を扱ってみよう

文字列を扱ってみよう

今回は、文字列の扱いを学んでいきます。

文字列の書き方

前回、以下のコードを書いてみました。

script.js
console.log('Hello, JavaScript!');

その中の、シングルクォーテーションで囲まれた文が、文字列として扱われます。

'Hello, JavaScript!'

また、ダブルクォーテーション(”)でも同様に文字列になります。

script.js
console.log("Hello, JavaScript!");

文字列の中で、シングルクォーテーションを使いたい時もあると思います。

例えば、「I’m Japanese.」のような文です。

console.log("I'm Japanese.");

このように、ダブルクォーテーションで囲んでいれば問題はありませんが、以下のように書くとエラーが発生します。

console.log('I'm Japanese.');

'I'で文字列が終了してしまい、m以降の文が文字列として認識されないからです。

文字列の中でシングルクォーテーションを使いたい時は、ダブルクォーテーションで囲むか、以下のような書き方をします。

console.log('I\'m Japanese.');

バックスラッシュ(\)の後にシングルクォーテーション(’)を書くと、文字列の終了ではなく文字として扱われるためエラーが発生しません。

\'のような書き方をエスケープシーケンスと言います。

同様に、ダブルクォーテーション(”)で囲んだ文字列の中に、ダブルクォーテーションを使いたい場合は、\"のように書きます。

シングルクォーテーション(’)、ダブルクォーテーション(”)どちらでも問題はありませんが、シングルクォーテーション(’)を使う人の割合の方が多いようです。

JavaScriptでは、文字列の中にHTMLを書くことがあるので、シングルクォーテーション(’)の方が楽かと思います。

シングルクォーテーション(’)の場合、以下のようなコードになります。

console.log('<p class="text">Text</p>');

一方、ダブルクォーテーションで書くとエスケープが必要なので、以下のように少し面倒な書き方になります。

console.log("<p class=\"text\">Text</p>");

当コースでは、特に理由がない場合はシングルクォーテーション(’)で統一して書いていきます。

シングルクォーテーション(’)またはダブルクォーテーション(”)で囲まれた文字列は、Stringという「型」になります。

例えば、1はNumber(数値)という型ですが、'1'はStringなので異なる扱われ方をします。

プログラミングでは、そのデータがどの型になっているかを意識しておく必要があるので、型というものがあるということは覚えておきましょう。

文字列を結合する

script.jsを、以下のように書き換えてみてください。

script.js
console.log('Hello, ' + 'world!');

コンソールを確認すると、Hello, world!と表示されます。

このように、+で文字列を結合することができます。

次に、以下のように書き換えてみてください。

script.js
console.log('9' + '6');

コンソールには96と表示されます。

次に、以下のように書き換えてみるとどうなるでしょうか。

script.js
console.log(9 + 6);

15と表示されました。

文字列同士を+で結ぶと、結合されますが、クォーテーションがない数値同士を+で結ぶと足し算が行われます。

では、一方を数値、もう一方を文字列にするとどうなるでしょうか。

script.js
console.log(9 + '6');

コンソールには96と表示されます。

JavaScriptは、文字列と数値を結合すると、数値は文字列に変換されて扱われます。

コメントアウト

次に、script.jsを以下のように書き換えてみてください。

script.js
// console.log("Hello, JavaScript!");

コンソールを確認すると、何も表示されません。

このように、//を記述した後に続くコードは、処理が行われません。

//は同じ行にあるコードが無視されるので、次の行には影響しません。

script.js
// console.log("Hello, JavaScript!");
console.log("このコードは実行されます。");

また、同じ行でも、//の前にあるコードは無視されません。

script.js
console.log("このコードは実行されます。"); // console.log("Hello, JavaScript!");

このように、//でコードを無視させることを、コメントアウトと言います。

複数行や指定の範囲だけコメントアウトしたい場合は、/**/で囲みます。

script.js
/*
console.log("Hello, JavaScript!");
console.log("Hello, world!"); 
*/

コンソールを確認すると、何も表示されません。

コメントアウトは、コードの説明を書く時によく使われます。

script.js
/**
 * 「Hello, world!」と表示されます。
 */
console.log("Hello, world!");

コードが長くなると、処理の内容が分かりづらくなるため、後から見た時に分かりやすいようにコードの説明をコメントアウトに書きます。