2

いくつかの jquery 変数を動的に作成したい。私のコードではループがあり、ループ値を使用していくつかの変数を作成したいと考えています。これが私のサンプルコードです。

array=["student","parent","employee"]

$.each(user_types, function( index, value ){
  var value+"_type" // this is the type of variable i want to build.
})

私はeval関数について見つけました。そのコードは次のようになります。

var type = "type"
eval("var pre_"+type+"= 'The value of dynamic variable, val';");

alert(pre_type) // this gives 'The value of dynamic variable, val' in alert box.

.jsファイルのコーディング中に eval 関数が優先されないことを読んだので、別の方法はありますか。

4

3 に答える 3

6

まず第一に、あなたがこれをやりたい理由が思いつかないと言わなければなりません。

これらの変数が本当に必要な場合は、グローバル スコープで次の操作を実行できます。

var array=["student","parent","employee"]

array.forEach(function(value){
  window[value+"_type"] = 'My value ' + value;
});

console.log(student_type);
console.log(parent_type);
console.log(employee_type);

変数をグローバル スコープで使用したくない場合は、洗練された解決策がわからないのではないかと思います。

array.forEach問題はjQueryとはまったく関係がなく、一貫した例を作成するのに十分なロジックを述べていないと思うため、jQueryループの代わりに使用しました。

編集:作成された「変数」は、グローバルスコープの他の変数とほとんど同じように動作しますが、変数ではないことを明確にする必要があります。それらの違いは次のとおりです。

// Difference 1: hoisting
console.log(x); // undefined
console.log(y); // ReferenceError: y is not defined
var x = 5;
window[y] = 5;
console.log(x); // 5
console.log(y); // 5
// Difference 2: [[Configurable]] 
delete x;
delete y;
console.log(x); // 5
console.log(y); // ReferenceError: y is not defined
于 2013-11-14T11:53:08.820 に答える