- ベストアンサー
javascriptのarertについて
最近javascriptの勉強を始めたのですが, var i = 3; arert = ("i"); とか var j =[1, 2, 3] arert = ("j[2]") などしますと、数字ではなくて、iなどの文字が表示されてしまいますよね? またfor(i=0; i<5;i++){ var sample_i = i } などしても多分sample0~sample_4まで定義したことにはなりませんよね? そこで質問なんですが、javascriptではこういった文字と数字をどうやって判別してるんでしょうか? また上の例のコードを書き直してくれたら嬉しいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
JavaScript の文法ですが、ザックリ言うと * 数字(0-9)で始まる単語は、数値型(number)の値 * 引用符("')で始まり引用符で終わる単語は、文字列型(string)の値、ただし引用符は除く * 英字(A-Za-z$_)で始まる単語は、同名の変数が指し示す(格納されている)値 * カギ括弧([])で囲まれた単語は、直前に示されたオブジェクト内の同名のプロパティが指し示す値 と解釈されますので // 引用符で始まっている単語 "i" は文字列型の値なので、そのまま表示 alert("i"); // 「i」を表示 // 英字で始まっている単語 i は変数なので、指し示す数値型の値(3)を文字列にして表示 alert(i); // 「3」を表示 // 英字で始まっている単語 j は変数なので、指し示す配列型オブジェクト(Array)の、 // カギ括弧で囲まれた単語 2 と同名のプロパティ(2)が指し示す、 // 数値型の値(3)を文字列にして表示 alert(j[2]); // 「3」を表示 // 英字で始まっている単語 sample_i と同名の変数を作成し(中略)値を代入 var sample_i = i; 「sample_i」の例ですが、書き換えるとしたら -- eval("sample_" + i + " = " + i + ";"); // 行儀良くない -- window["sample_" + i] = i; // 割とマシだがやはり良くない -- var sample = new Array(); ... sample[i] = i; // かなり良い -- var obj = new Object(); ... obj["sample_" + i] = i; // 応用性があってオススメ
その他の回答 (3)
- babu_baboo
- ベストアンサー率51% (268/525)
for(var i=0; i < 5; i++) window['sample_'+i] = i; alert([ sample_0, sample_1, sample_2, sample_3, sample_4 ]); 使うことはないだろうけど。
関数の引数を「"」でくくらなければいけないという決まりはありません。文字列をくくればいいだけです。変数として扱わなければならないものを「"」でくくってしまったら文字列になっちゃって当然ですよね。 alert(i); alert(j[2]); こういうことですか?素直に配列使えばいいだけだと思いますが… (配列を使わずに連番変数を使おうという発想自体がまずナンセンスです) http://blog.livedoor.jp/jimuguri/archives/50690071.html
- b0a0a
- ベストアンサー率49% (156/313)
""で囲まれた部分は文字列と認識されます。 普通に英数字を書いた場合は、forやif等の予約語を除いて変数や関数の名前になる識別子と認識されます。 識別子には英数字の他に_や$等の文字を使えます。 alert("i"); だとalert関数に文字列iを渡すことになります。 変数iの値を渡したい場合、 alert(i) としてください。 また、後者の例は基本的にできません。 そのように区切られた箱を使いたい場合は、配列という専用の仕組みが用意されているのでそちらを使います。 var sample = []; for(i=0; i<5; i++) { sample[i] = i }
お礼
なるほど。javascriptでは、C言語のように型は指定する必要がないということですね。 分かり易い説明ありがとうございました。