6

関数が非常に便利であることがわかりましcompactた(phpで)。これが何をするかです:

$some_var = 'value';
$ar = compact('some_var');
//now $ar is array('some_var' => 'value') 

したがって、要素のキーが変数名の場合、指定した変数から配列を作成します。javascript にはどんな種類の関数がありますか?

4

4 に答える 4

4

いいえ、類似の関数はなく、現在のコンテキストの変数名/値を取得する方法もありません。それらが の「グローバル」変数である場合のみですwindow。これはお勧めできません。もしそうなら、あなたはこれを行うことができます:

function compact() {
    var obj = {};
    Array.prototype.forEach.call(arguments, function (elem) {
        obj[elem] = window[elem];
    });
    return obj;
}
于 2013-04-29T03:27:44.627 に答える
0

変数がグローバル スコープ内にない場合でも、可能性はありますが実用的ではありません。

function somefunc() {
    var a = 'aaa',
        b = 'bbb';

    var compact = function() {
        var obj = {};
        for (var i = 0; i < arguments.length; i++) {
            var key = arguments[i];
            var value = eval(key);
            obj[key] = value;
        }
        return obj;
    }
    console.log(compact('a', 'b')) // {a:'aaa',b:'bbb'}
}

良いニュースは、ES6 にはまさにこれを行う新しい機能があることです。

var a=1,b=2;
console.log({a,b}) // {a:1,b:2}
于 2015-10-31T05:12:24.847 に答える