バリケンのJavaScript日記 RSSフィード

2006-10-22

[] Core JavaScript 1.5 Guide 日本語版を読む(3)  Core JavaScript 1.5 Guide 日本語版を読む(3) - バリケンのJavaScript日記 を含むブックマーク はてなブックマーク -  Core JavaScript 1.5 Guide 日本語版を読む(3) - バリケンのJavaScript日記  Core JavaScript 1.5 Guide 日本語版を読む(3) - バリケンのJavaScript日記 のブックマークコメント

きょうもCore JavaScript 1.5 Guide 日本語版「第3章 コア言語の機能」を引き続き読んでいくよ。

きょうも気になったところをメモしていくね。

変数

昨日もちょっと出てきたけど、変数について。

変数名はアルファベットかアンダースコアかドル記号から始まり、続く文字は数字もOK。大文字、小文字を区別するんだって。

変数の宣言

変数の宣言はvarを使うんだって。

var x = 42;

なんと、varを省略すると、どこでもグローバル変数になるんだって!ちょっとびっくり。

変数は「入れ物」?「ラベル」?

あと、Rubyでは「全てがオブジェクト」だったけど、どうやらJavaScriptでは違うみたいだねえ。「値」と「オブジェクト」は違うものみたい。

Rubyでは変数は「オブジェクトに貼り付けるラベル」だったけど、JavaScriptではどうかな?

とりあえず、「値」に対する「変数」は、「入れ物」と考えていいのかな?じゃあ、オブジェクトに対してはどうだろう?

これを調べるには、破壊的メソッドがあるオブジェクトを作ってみて実験すればいいよね。昨日出てきたArrayオブジェクトreverse()メソッドは破壊的メソッドみたいだから、これを利用して実験してみよう!

>cscript ijs.js
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

js> var a1 = [1, 2, 3, 4, 5];
1,2,3,4,5
js> var a2 = a1;
1,2,3,4,5
js> a1.reverse();
5,4,3,2,1
js> a1
5,4,3,2,1
js> a2
5,4,3,2,1
js>
^C
>

うん、オブジェクトに対しては、JavaScriptでも「変数オブジェクトに貼り付けるラベル」と考えていいみたい。

[] Arrayオブジェクトのmapメソッド  Arrayオブジェクトのmapメソッド - バリケンのJavaScript日記 を含むブックマーク はてなブックマーク -  Arrayオブジェクトのmapメソッド - バリケンのJavaScript日記  Arrayオブジェクトのmapメソッド - バリケンのJavaScript日記 のブックマークコメント

Rubyではおなじみのmapメソッドは、JavaScript 1.5では実装されていないみたい(1.6からみたい)。

いろいろと探してみたところ、こちらで実装されていたのでそのままコピペさせてもらったよ。mapがあればRubyのeachっぽいこともできるから便利だよね。

function puts(s) {
  WScript.StdOut.Write(s + "\n");
}

if (!Array.map) {
  if (!Array.prototype.map) {
    Array.prototype.map = function (callback, thisObject) {
      var length = this.length;
      var result = new Array(length);
      for (var i = 0; i < length; i++)
        result[i] = callback.call(thisObject, this[i], i, this);
      return result;
    };
  }
  Array.map = function (array, callback, thisObject) {
    return Array.prototype.map.call(array, callback, thisObject);
  };
}

var a = ["ひとつ","ふたつ","みっつ","よっつ","いつつ"];

a.map(function (item) {
  puts(item);
});

実行結果だよ。

>cscript array_map.js
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

ひとつ
ふたつ
みっつ
よっつ
いつつ

>