JavaScript 全局属性/関数詳解:全局を掌握し、自在に操る
説明: JavaScript でよく使用されるグローバルプロパティと関数を詳しく解説し、その機能と使い方を理解することで、JavaScript プログラミング能力の向上を目指します。
JavaScript グローバルプロパティ
1. Infinity
- 意味:正の無限大を表す数値です。
- 使用シーン:JavaScript の最大数値範囲を超えた数値を扱う場合に利用します。
2. NaN
- 意味:非数(Not a Number)を表します。
- 使用シーン:値が有効な数値かどうかを判断するために使用します。
3. undefined
- 意味:未定義の値を表します。
- 使用シーン:変数に値が代入済みかどうかを判断するために使用します。
4. グローバルオブジェクト (Global Object)
- 意味:すべてのグローバルプロパティと関数は、グローバルオブジェクトの属性です。
- ブラウザ環境では、グローバルオブジェクトは window オブジェクトです。
JavaScript グローバル関数
1. エンコードとデコード URL
- encodeURI(): 文字列を URI にエンコードします。
- decodeURI(): URI をデコードします。
- encodeURIComponent(): 文字列を URI コンポーネントにエンコードします。
- decodeURIComponent(): URI コンポーネントをデコードします。
- 使用シーン:URL 内の特殊文字を処理する場合に利用します。
関数 | 説明 |
---|---|
encodeURI() |
URI全体をエンコードします。ただし、;/?:@&=+$,# といったURIの構成要素となる記号はエンコードしません。 |
decodeURI() |
encodeURI() でエンコードされたURIをデコードします。 |
encodeURIComponent() |
URIの構成要素をエンコードします。;/?:@&=+$,# といった記号もエンコードします。 |
decodeURIComponent() |
encodeURIComponent() でエンコードされたURIコンポーネントをデコードします。 |
2. eval()
- 意味:文字列を JavaScript コードとして解析し、実行します。
- 使用シーン:動的にコードを実行する場合に利用しますが、セキュリティ上の問題に注意が必要です。
3. isFinite()
- 意味:値が有限数かどうかを判断します。
- 使用シーン:数値の検証に利用します。
4. isNaN()
- 意味:値が NaN かどうかを判断します。
- 使用シーン:数値の検証に利用します。
5. Number()
- 意味:さまざまなデータ型を数値型に変換します。
- 使用シーン:データ型の変換に利用します。
6. parseFloat()
- 意味:文字列を浮動小数点数に解析します。
- 使用シーン:文字列から数値への変換に利用します。
7. parseInt()
- 意味:文字列を整数に解析します。
- 使用シーン:文字列から数値への変換に利用します。
8. String()
- 意味:さまざまなデータ型を文字列型に変換します。
- 使用シーン:データ型の変換に利用します。
9. オブジェクト関連関数
- Object(): オブジェクトを作成します。
10. その他
- escape(): 文字列をエンコードします。 (非推奨)
- unescape(): 文字列をデコードします。 (非推奨)
<script>
// encodeURI() の例
const uri = 'https://www.example.com/検索?q=java script';
const encodedUri = encodeURI(uri);
console.log(encodedUri); // 出力: https://www.example.com/%E6%A4%9C%E7%B4%A2?q=java%20script
// decodeURI() の例
const decodedUri = decodeURI(encodedUri);
console.log(decodedUri); // 出力: https://www.example.com/検索?q=java script
</script>
まとめ
JavaScript のグローバルプロパティと関数を習得することで、開発者はさまざまなプログラミングシーンをより効率的に処理し、より簡潔で洗練されたコードを作成することができます。関連QA
Q1: グローバルオブジェクトとは何ですか?
A1: グローバルオブジェクトは、コード内のどこからでもアクセスできるオブジェクトです。ブラウザ環境では `window` オブジェクトがグローバルオブジェクトとなり、Node.js 環境では `global` オブジェクトがグローバルオブジェクトとなります。グローバルプロパティやグローバル関数は、このグローバルオブジェクトのプロパティとして定義されています。
Q2: `eval()` 関数はなぜ危険 considered dangerous なのですか?
A2: `eval()` 関数は、渡された文字列を JavaScript コードとして実行するため、悪意のあるコードが実行される可能性があります。例えば、ユーザーが入力した文字列を `eval()` 関数に渡すと、クロスサイトスクリプティング(XSS)攻撃を受ける可能性があります。そのため、`eval()` 関数は使用を避けるべきです。もし、どうしても使用しなければならない場合は、渡される文字列を厳密にチェックする必要があります。
Q3: `parseInt()` と `parseFloat()` の違いは何ですか?
A3: `parseInt()` は文字列を整数に変換する関数で、`parseFloat()` は文字列を浮動小数点数に変換する関数です。例えば、`parseInt('10.5')` は `10` を返し、`parseFloat('10.5')` は `10.5` を返します。