Vue.prototype.$copyText = function (text, select,container) {
var btn = document.querySelector(select);
return new Promise(function (resolve, reject) {
var clipboard = new Clipboard(btn, {
text: function () {
return text;
},
action: function () {
return 'copy'
},
container: typeof container === 'object' ? container :
document.body
});
clipboard.on('success', function (e) {
clipboard.destroy();
resolve(e);
});
clipboard.on('error', function (e) {
clipboard.destroy();
reject(e);
});
});
}
现在我知道局部范围变量在该函数之外的任何地方都不可用,但我在这里感到困惑的是关于执行堆栈。因此,当调用foo时,堆栈将是全局的,foo,bar。并且变量查找也会在堆栈中向下移动。因此,通过这种逻辑,当从foo内部调用时,为什么'a'在bar中无法访问。
答案 0 :(得分:0)
每个函数只能访问自己的堆栈帧,而不能访问其中一个调用者。
此外,此堆栈由内部/运行时/编译器内部处理,而不能直接访问更高级语言,后者通过使用符号变量访问其数据,其后备数据可来自各种类型的地方。变量的可见性由语言定义,与存储它们的存储位置无直接关系。
几乎所有语言都是如此。
在JavaScript中,函数可以访问封闭的范围。如果你愿意,范围也会“叠加”(我认为正确的术语是它们“嵌套”),但这与调用堆栈不同。