JScript.NET  新JavaScript入門  JavaScript,Neo-Generation  DOM  WSH  掲示板  表紙
構文  クラス 
Written 6/19/03
Last Updated 6/20/03
JScript.NET
関数
型付け
引数と返り値(戻り値)が型付けできるようになりました。
    print(twice(2));     //4
    
    //2倍にして返す関数
    function twice(a : int) : int {
        return a * 2;
    }
 
引数のaがintで、返り値もintになります。
引数の型が合っていないとコンパイルエラーです。
    print(twice(2.1));   //型が一致しません。
 
返り値の型が合わないと例外が投げられます。
    print(twice(2));     //例外発生
    
    function twice(a : int) : int {
        return a * 2.1;
    }
 
もちろん型付けしなければ動作します。
    print(twice(2));     //4.2
    
    function twice(a) {
        return a * 2.1;
    }
 
値を返さないのもOKです。
    twice(2);
    
    function twice(a) : int {
        ;
    }
 
可変個の引数
通常モードでは関数オブジェクトの arguments プロパティは使えなくなりました。 その代わりに次のように可変個の引数を受け取ることができます。
    max.js
    ------------------------------------------
    print(max(2, 5, 4));
    
    function max(... args : int[]) : int {
        if(args.length < 1)
            throw(1);
        var maxelem = args[0];
        for(var i = 1; i < args.length; i++) {
            if(args[i] > maxelem)
                maxelem = args[i];
        }
        return maxelem;
    }
 
とにかく、上のように ... と書くと、 引数を配列として受け取ることができるようです。
    test(2, 5, 4);
    
    function test(a : int, ... args : int[]) : int {
        print(a);                //2
        print(args.length);      //2
    }
 
このように配列以外の引数と混合して使うこともできます。 ただし、配列は最後の引数でなければなりません。 この辺はPerlと同じですね。
ユーザ定義オブジェクト
ユーザ定義オブジェクトは残っています。
ただし、クラスに移行すべきでしょう。
    var a = new Person("あさ美", "カプチーノ");
    var b = new Person("あゆみ", "マルガリータ");
    print(a.ToString());     //あさ美カプチーノ
    
    function Person(name : String, wname : String) {
        this.name = name;
        this.wname = wname;
        this.ToString = function () { return this.name + this.wname; }
    }
 
プロパティやメソッドを追加することもできます。
    calQ.js
    ----------------------------------------------------------
        ...
    a.kcal = 20000;
    a.Print = function() {
        print("カロリークイーン " + this.kcal + "kcal突破!");
    }
    
    a.Print();
 
多重定義
関数の多重定義は、警告は出ますができるようです。
    multi_max.js
    -----------------------------------------------
    print(add(1, 2));     //3
    print(add(1, 2, 3));  //6
    
    function add(a : int, b : int) : int {
        return a + b;
    }
    
    function add(a : int, b : int, c : int) : int {
        return a + b + c;
    }
 
1行目は上のmaxを、2行目は下のmaxを使っているようです。
prev, next, exit