jsにおいて、連想配列とオブジェクトは等価らしい。
- {js} オブジェクトっぽいことの続き。 - html css, javascript
- {js} functionの羅列に限界を感じたのでオブジェクトへ。 - html css, javascript
参考
便宜上、オブジェクトと連想配列を(キーワードとして)使い分けることはあるにせよ、オブジェクトと連想配列とは、JavaScriptの世界においては同一の概念なのである。
↑と、書かれている。
<script type="text/javascript"> var hoge = new Object(); hoge.a = 1; hoge.b = 2; alert(hoge.a); alert(hoge.b); </script>
と、
<script type="text/javascript">
var hoge = {
a:1,
b:2
}
alert(hoge.a);
alert(hoge.b);
</script>
は等価。
↑はさらに、こう↓も書けるらしい。
<script type="text/javascript">
var hoge = {
a:1,
b:2
}
alert(hoge["a"]);
alert(hoge.b);
</script>
関数の知識が弱いようなので、基礎を復習。
いちいちこういう書き方をするケースが思い当たらないが、これがわかれば他人のソースは読めるようになりそう。山田先生も「理解し難い」と書いてます。
「関数定義とは変数定義である」という理解と照らし合わせてみると、これまた、直感的には理解しがたいコードだ。
<script type="text/javascript">
function x(a,b){
return a + b;
}
alert(x());
</script>
↑これだと 返り値は 「NaN」 になる。NaNはNot-a-Number。
<script type="text/javascript">
function x(a,b){
return a + b;
}
alert(x(1));
</script>
↑これも 「NaN」。
<script type="text/javascript">
function x(a,b){
return a + b;
}
alert(x(1,2));
</script>
↑ここで初めて、 「3」が返る。
function文は動的に実行される文ではなく、静的な構造を宣言するためのキーワードであるためだ。「静的な構造を宣言」とはどういうことかというと、要はコードが解析/コンパイルされるタイミングで、function文は関数を定義してしまうということ
なので、
実行時にはすでにコード内の構造としてadd関数が登録されているものとして、どこからでもadd関数を呼び出すことができる。
だそうです。つまり、定義した関数の前でも後でも、実行できますよってことですね。
コメントする