JavaScriptの変数のスコープについて学ぶ
白石俊平
2008/05/23 18:00
今回と次回でJavaScriptにおける変数のスコープについて学びます。今回は、スコープについての基本的な事柄を軽く復習するとしましょう。
function test() {
for (var i = 0; i < 10; i++) {
// ブロック内でjを宣言
var j = i;
}
// ブロックの外なので、jにはアクセスできない?
alert(j);
}
上のコードで、「ブロックの外なので、jにはアクセスできない?」とコメントされている部分は、実際にはアクセスできます。これは、前述した「ブロックスコープが存在しない」ということによるものです。
さらに正確を期して言うなら、この挙動は「関数内のローカル変数は、全て関数の先頭で宣言されたことになる」というルールによるものです。このルールに則ると、上のコードは以下のように書き換えることができます。
function test() {
// 関数の先頭でローカル変数を全て宣言
var i, j;
for (i = 0; i < 10; i++) {
j = i;
}
alert(j);
}
おわかりいただけましたか?これはつまり、「一つの関数は、一つのスコープとのみ対応している」と言い換えることができます(この言葉は、次回の記事への布石です)。
では以下の関数fを実行すると、どんな値がアラート表示されるでしょう?
var v = "global";
function f() {
alert(v);
if (!v) {
var v = "local";
}
}
答えは……
"undefined"です。if文の中で、vがローカル変数として宣言されていることに注意してください。
今回のまとめ
今回は、今更ながら変数のスコープについてお話ししてみました。が、最後に紹介したTIPSに関してはは、ご存じなかった方も多いのではないでしょうか。
しかし、変数のスコープに関する話題はまだ終わりではありません。次回はさらに踏み込んで、「スコープチェイン」に関するお話をしてみたいと思います。乞うご期待!
- コメント(3件)
#1 uchima
- 2008/07/24 09:37:29
早く続きが読みたいです。せめてDojoコードを読む手前までは連載を続けてほしい。
» 不適切なコメントを報告する
#2 tomita
- 2008/07/24 16:05:05
builder編集部 冨田です。
ご要望、ありがとうございます。改めて白石俊平さんに連絡したところ、
「頑張ります。今週土日に書きま... 続きを見る
» 不適切なコメントを報告する
- 特集: JavaScriptのイロハ (19件)
- 昨日のトップ記事
- 2日前
- 3日前
- 6日前
- 7日前
- ホワイトペーパー
- 企画特集
情報大洪水時代を生き抜くソリューション
IT技術者はもっと幸せになれる!
Touch Diamond VS iPhone 3G
ただのERPだけじゃもう足りない!
国内シェアNo1
局所冷却に注目。
仲間と情報を共有・公開する楽しみ方は?
NECのグリーンITの本気度「PUEは1.58」
Green Enterprise
今なら無料! IBMの「グリーンIT化診断」
Techno Exchange
価格から質へと変わるアウトソーシング市場
REAL IT COOL PROJECT
グローバル競争に金融不安……
グリーンデータセンターの新潮流
- 解約率わずか1%のホスティングサービス
- ERP,CRMのレスポンスの遅さを劇的改善!
- なぜ、ERP 導入は敷居が高いのか?
- エンタープライズサーチ特集!
- Web2.0時代におけるセキュリティ上の課題
- 所有から利用へ。拡大するiDC市場
- 運用管理こそ業務の背骨
- データバックアップで事業継続力を向上!
- MicrosoftもOracleもDWH市場に参入!
- 市場のニーズに応えた帳票ソリューション
- 話題のタグ
プログラミング言語
プロジェクト管理
Linux
モバイル
SOA
server
Flash
Apple
Opera
Firefox
開発環境
Microsoft
iPhone
Webデザイン
脆弱性
ブラウザ
Off Topic
Windows
デザイン
iPod touch
Mac OS X
Tips
Ajax
小技
Internet Explorer
携帯電話機
JavaScript
オープンソース
仮想化ソフトウェア
iPhone 3G
Java
Safari
Database
Firefox 3
仮想化
ソフトウェア開発
Adobe
データベース
入門
Google
Mozilla
レビュー
PHP
リファレンス
CSS
ユーザーインタフェース
RIA
Webサービス
HTML
UI
話題のタグを見る »
#3
CSS 3のボックスレイアウトでコンテンツを画面の中央に配置する
ローカルへのデータの保存を可能にするDOM Storage
iPhoneアプリ開発苦労話ベスト3―伝説の開発者に訊く(その1)
あなたの知らないPKI(2)--PKIのコア要素/電子証明書と認証局
不況に強いITを目指す--不況時に高い需要が望める分野はこれだ
最初からXenを組み込んだPCが出荷される:Xenプロジェクト創始者の将来予測