如何在JavaScript中访问内部函数中的闭包范围变量。
我想在 <script>
var select = 'B'
var vm=new Vue({
el:'#myapp',
data:{
select: select,
multiple:select
}
})
</script>`
功能中访问 UL 变量。
setTimeout
答案 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);
})();
此处,ul
与a
变量相同。
答案 2 :(得分:0)
您可以通过查找当前元素的父级来访问UL。要获取具有指定类型的直接父级,可以使用.closest()
方法
$(ele).on("focusout", function() {
var el = $(this);
setTimeout(function() {
el.closest("ul");
debugger;
}, 1);
}.bind(ul, ele));