{js} オブジェクトっぽいことの続き2

jsにおいて、連想配列とオブジェクトは等価らしい。

参考

便宜上、オブジェクトと連想配列を(キーワードとして)使い分けることはあるにせよ、オブジェクトと連想配列とは、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関数を呼び出すことができる。

だそうです。つまり、定義した関数の前でも後でも、実行できますよってことですね。

カテゴリ:

トラックバック(0)

トラックバックURL: http://www.0yen-coding.com/mt-tb.cgi/319

コメントする

あわせて読みたいブログパーツ