Click here to visit our sponsor

Scripting - JScript


ここは...

JScript の要点を軽くまとめました。


目次


コピー と 参照 (値渡し と 参照渡し)

参照

var a = new Array();
var b;

b = a;
b[0] = 10;

b は、a の参照。
b を変更すると、a の内容も変わる。

コピー

var a = new Array();
var b;

b = new Array(a);    // a と同じ中身のものを生成

b は、a のコピー。
b を変更しても、a の内容は変わらない。

関数の戻り値として使う

function foo1()
{
    var a = new Object(...);
    var b;
    ...
    b = a;    // 参照を代入
    return b;
}

function foo2()
{
    var c = foo1();
    var d = foo1();
}

ローカル変数の寿命は、関数の範囲。
よって、関数 foo1() の変数 a,b は関数内で完結。

ただし、関数 foo2() で戻り値を変数 c,d に代入し、参照数を +1 しているので、
関数 foo1 を抜けても Object オブジェクトは実体を保っていることになる。

ここでは、変数 c,d がスコープを外れた時、オブジェクトは破棄される。
また変数 cd は別々の実体。

文字列

文字列は 値渡し なので、関数の引数にすると効率が悪い。

文字列も参照数をカウントしているが、
JScript において文字列の参照を扱うことは出来ない。

破棄 (ゴミ処理)

参照数が 0 になった瞬間、破棄されるのは VBScript。
JScript はスクリプトエンジンを終了するまで延滞される模様。


自分のオブジェクト

function HelloObject(str)    // コンストラクタ
{
    this.Hello = _HelloObject_Hello;    // メソッドの定義 (実装をここに記述してもいい)

    if (str != null) {
        this.str = str;
    } else {
        this.str = "Hello, my world!";    // デフォルト引数
    }
}
function _HelloObject_Hello()    // メソッドの実装
{
    puts(this.str);
}

関数が、自分のオブジェクトになる。

var hello = new HelloObject("Hello, your world!");    // インスタンスの生成

hello.Hello();    // メソッドの実行

メソッドの実行例


テクニック

実数を整数にする

b = (a / 10) | 0;

ビット演算すると、整数になるのを利用。
こうした方が高速。

引数の省略

function foo(a, b)
{
    if (!b) {    // (b == null) とか (b === undefined) にする
        ...
    }
}

foo(1);
foo(1, 0);
foo(1, false);

これだと、b の値が 0/false の時も真になってしまう。


スクリプトページトップ

HOME

兄弟ページ 姉妹ページ
Click here to visit our sponsor