匿名函数的javascript变量作用域

匿名函数的javascript变量作用域,javascript,jquery,Javascript,Jquery,我有一个javascript/jquery函数,其中我将div中的每个元素存储到一个数组中。问题是它不会将结果保存在匿名函数之外。如何设置全局变量 这是我的Javascript/jquery function store_options(){ var stored_options = new Array; $('[id^="tagboxfv-"]').each(function(){ var last_index = slice_last_index(this);

我有一个javascript/jquery函数,其中我将div中的每个元素存储到一个数组中。问题是它不会将结果保存在匿名函数之外。如何设置全局变量

这是我的Javascript/jquery

function store_options(){
    var stored_options = new Array;
    $('[id^="tagboxfv-"]').each(function(){
        var last_index = slice_last_index(this);
        $('[id="form-'+last_index+'"] > select[id="v-'+last_index+'"] > option').each(function(){
            stored_options[last_index] = [];
            stored_options[last_index][$(this).val()]=$(this);
        });
    });
}

通常不建议在JavaScript中使用全局变量。 Bu如果您仍然想使用它,只需在功能范围之外定义它:

var stored_options = new Array;

function store_options(){    
    $('[id^="tagboxfv-"]').each(function(){
        var last_index = slice_last_index(this);
        $('[id="form-'+last_index+'"] > select[id="v-'+last_index+'"] > option').each(function(){
            stored_options[last_index] = [];
            stored_options[last_index][$(this).val()]=$(this);
        });
    });
}
作为替代方案,您的函数可以有一个return语句,以便您可以在任何地方使用它(这样就不会引入全局变量):


可以在所有函数之外使用变量

    <script>
      var someVar;
      function foo(){

      }
    </script>

第一个数组可能重复,但它只记录第二个数组的最后一个选项。我也尝试了第二个数组,它输出未定义的函数fv_tags(){var stored_options=store_options();console.log(stored_options);};对于第一个-我认为问题在于slice_last_index(this)函数中-我假设您的索引被重写。关于第二个-您需要确保在外部范围(而不是在$(document.ready)中定义store_options(),并检查定义您的fv_标记函数以及您的答案是正确的。我的问题是如何建立多维阵列。我很乐意提供帮助:-)
    <script>
      var someVar;
      function foo(){

      }
    </script>
       window.propName = "asd";