如何从JavaScript中的Closure Scope访问变量

时间:2016-06-27 11:25:34

标签: javascript jquery closures

如何在JavaScript中访问内部函数中的闭包范围变量。

我想在 <script> var select = 'B' var vm=new Vue({ el:'#myapp', data:{ select: select, multiple:select } }) </script>` 功能中访问 UL 变量。

setTimeout

3 个答案:

答案 0 :(得分:1)

setTimeout

中使用closure
  

Closures'记住'创建它们的环境。

ul.find("li").each(function(a, ele) {
  $(ele).attr("tabindex", options.items[a].tabindex);
  $(ele).on("focusout", function() {
      setTimeout(function(ul) {
        return function() {
          console.log(ul);
        }
      })(ul), 1);
  }.bind(ul, ele));
}.bind(ul));

答案 1 :(得分:0)

它正常工作。 ul的范围在setTimeout函数内有效。

ul.find("li").each(function() {
  $(this).attr("tabindex", options.items[a].tabindex)
    .on("focusout", function() {
      setTimeout(function() {
        ul.css('color', 'orange');
      }, 1);
    });
});

这样的简单代码可以解释你:

(function s() {
  var a = "hi";
  setTimeout(function () {
    console.log(a);
  }, 1000);
})();

此处,ula变量相同。

答案 2 :(得分:0)

您可以通过查找当前元素的父级来访问UL。要获取具有指定类型的直接父级,可以使用.closest()方法

$(ele).on("focusout", function() {
   var el = $(this);
   setTimeout(function() {
     el.closest("ul");
     debugger;
   }, 1);

 }.bind(ul, ele));