第1章:概要、第2章:字句構造、第3章:データ型と値

基本型の数値と論理値は「値による」操作であり、オブジェクト(配列や関数を含む)は「参照による」操作であるということ。その理由は、オブジェクトはプロパティや要素をいくつでも持つことができ、サイズも自由なので、基本型ほど操作が容易ではなく、サイズが非常に大きくなるので、値により操作すると、大量のメモリを消費してしまい、効率的でないから。

基本型の中でも、文字列には、charAt()メソッドのように文字列内の特定の位置にある文字を知るメソッドはあっても、文字を変更するメソッド(たとえばsetCharAt()メソッドのような)はなく、仕様として不変で、コピーしたり渡したりするときに「値による」のか「参照による」のか知る方法はない。つまり、どちらでもないということ。しかし、比較するときには(CやC++、Javaとは異なり、)「値による」。これは、プログラマが文字列を比較する場合は「値による」比較を望んでいるのだとJavaScriptが判断しているため。

TDノードオブジェクトをtoString()メソッドやString()関数で文字列に変換したとしても、その結果は<td> … </td>のようなhtmlソースそのままではなく、[Object HTMLTableCellElement]のような文字列になる。

undefinedは宣言はされているが、値が設定されていないか、または存在しないオブジェクトプロパティである、という意味。nullは「存在していても値がない」という意味。==等値演算子で比較した場合には同じ値と見なされる。
javascriptにおけるnullとundefinedの違いはそうとう厄介らしい。
[Javascript] nullとundefinedとfalseと0と空文字と

関数には、function square(x){return x*x;}という定義のしかたの他に、var square = function(x){return x*x;}という関数リテラルによる定義のしかたがあり、ラムダ関数と呼ばれる。高度なスクリプトになると、関数リテラルの方が便利な場合があることが分かる。読み進めるとそのうち分かるらしい。

カテゴリ: JavaScript, サイ本を読む

コメント/トラックバック

トラックバック用URL:

この投稿のコメント/トラックバックフィード:

http://mintlog.com/javascript/one-to-three/211/feed/