如何使用forEach在JavaScript和jQuery中设置动态变量

How can I use forEach to set dynamic variables in JavaScript and jQuery?

本文关键字:设置 动态 变量 jQuery 何使用 forEach JavaScript      更新时间:2023-09-26

我正在编写一个jQuery插件。有一个选项对象,我想循环使用它来设置正则变量。它基本上会设置一个变量,作为对象项的索引。我想确定是否有任何选项为空,如果为空,请将常规变量设置为默认值。如果选项为空,我通常会使用以下选项将其设置为默认值:

 var defaults = {
     someVar1 : "somevar1",
      omeVar2:  "somevar2"
 };
var someVar1;
var someVar2;
function init(options, defaults){
   if(typeof options.someVar1 === 'undefined'){
      someVar1 = defaults.someVar1;
   } else {
      someVar1 = options.someVar1;
  }
   return something();
}
function something(){
   console.log(item);
});

如果我有很多选择的话,这可能会让我非常痛苦。如何修改下面的代码以动态定义全局变量?

function init(element, options){
    $(document).ready(function(){
         $.each(options, function(index, value){
             if(typeof options.index === 'undefined'){
              }
         });
     });
 }

假设您有一个对象:

var my_object = {
    item1 : 1,
    item2 : 2,
    item3 : 3,
}
var i;
for(i in my_object){
    console.log(i); 
    console.log(my_object[i]);
}
/*
    This will print in the console:
    item1
    1
    item2
    2
    item3
    3
*/

对于每个都找不到未定义的,因为未定义的不存在,除非你的对象是这样的:

var my_object = {
    item1 : 1,
    item2 : 2,
    item3 : 3,
    item4 : undefined
}

还有:

$.each(options, function(index, value){
  // if(typeof options.index === 'undefined'){ <-- this is wrong
     if(typeof options[index]=== 'undefined'){ <-- this is correct
        // Also you have the value, why not "value === undefined" ?
     }
});

听起来你可能想设置一个预定义的变量数组,然后根据选项的索引读取其默认值

var optionDefaults = ["val1", "val2", "val3"];
function init(element, options){
    $(document).ready(function(){
         $.each(options, function(index, value){
             if(typeof options.index === 'undefined'){
                  var optiondefValue = optionDefaults[index];
                  //do whatever you want here.
              }
         });
     });
 }