JavaScript ブロック内定義変数の挙動

返信する

スマイリー
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o [-X [-o<
スマイリーを全て表示する

BBCode: ON
[img]: ON
[url]: ON
スマイリー: ON

トピックのレビュー
   

展開ビュー トピックのレビュー: JavaScript ブロック内定義変数の挙動

Re: JavaScript ブロック内定義変数の挙動

by zxcv » 2009年11月05日(木) 02:04

そうだったんですか。 ありがとうございます。

ブロックスコープって言うんですね、これ。 無いと、使い捨て変数の名前決めに思考を奪われちゃうんですよね。

let と with は知らなかったので、勉強します。

# 本当は、新たに文法を覚えなくても良い方法がうれしかったのですが。

Re: JavaScript ブロック内定義変数の挙動

by Piro » 2009年11月05日(木) 01:24

var宣言はそういう仕様です。
ブロックスコープを使いたい場合は、JavaScript 1.7から導入されたletを使う必要があります。
http://nanto.asablo.jp/blog/2006/07/08/437419
こちらの記事ではletを使わずにwithでそれっぽく書く方法も紹介されてます。

JavaScript ブロック内定義変数の挙動

by zxcv » 2009年11月04日(水) 23:38

コード: 全て選択

    var v1 = 'OK';
    {
      var v1 = 'NG';
    }
    alert(v1);


Firefox3.5.4 でこのコードを実行すると、「NG」が alert表示されます。 「OK」が表示されるか、せめてエラーになって欲しいと思うのですが、こういう規格なんでしょうか?

ページトップ