読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

JavaScriptで分割代入を作ってみた【失敗作(;゚Д゚)】

JavaScript


Firefoxで分割代入できるのは知っていたけど、Chromeでも出来ないかなぁっと思い、作ってみました。


先に言っておくと、使い物にはなりませんΣ(゚д゚lll)

function s(x, y) {
    for (var i = 0, n = x.length; i < n; i++) {
        eval('this.'+x[i]+'='+y[i]);
    }
}


使い方は

var x, y;
s(['x', 'y'], [10, 20]);

こんな感じで、変数名を文字列で渡します。


ちなみにこんな風に変数の中身を入れ替えることも可能です。

s(['x', 'y'], [y, x]);


内容としてはevalで動的に変数に値を代入しているだけです。


なんとなく使えそうな感じがするかもしれませんが、グローバル変数しか対応できないです。

関数内のローカル変数では機能しません><


なんか無駄なものを作ってしまった感じですが、楽しかったからヨシとしようヽ(*´∀`)ノ


ちなみにFirefoxで使える分割代入とかは下記を参照してください。

New in JavaScript 1.7 - MDC

JavaScript の分割代入まとめ




おまけ

無駄なものついでに、foreachも考えてみました。


配列でこういう風に書くと配列のインデックスが取得できます。

var array = ['a', 'b', 'c'];
for (var i in array) {
    alert(i);
}


コレをインデックスではなく、配列の中身が取得できるような関数を作ってみました。


まずは関数を定義します。

function foreach(a) {
    var o = {};
    for (var i = 0, n = a.length; i < n; i++) {
        eval('o.'+a[i]+'=null');
    }
    return o;
}


使い方は

var array = ['a', 'b', 'c'];
for (var i in foreach(array)) {
    alert(i);
}


コレでインデックスではなく、配列の中身が取得できます。


関数では単純に配列の中身をプロパティにしちゃってるだけです。


無駄にループ回してるし、配列が数値の場合は動かないです。


ホントに意味ないですね(´Д`;)