Javascript-一个变量能在多大程度上保持其价值
Javascript - How deeply can a variable retain its value?
这里没有问题。请参阅下面的代码。我在哪里可以阅读更多关于这方面的信息?我的意思是,this_variable
得到100。所有随后定义的函数似乎都能够访问这个变量并获得它的值,但我想知道这有多深入?我正在开发Chrome扩展,而这该死的东西只适用于回调;我需要能够在一个嵌套很深的回调中访问内容,并且我需要确保我所写的内容是可靠的,并且保持一致。
(function(){
this_variable = 100;
(function(){
(function(){
(function(){
(function(){
(function(){
tadaaa = this_variable;
console.log(tadaaa); // sais 100
}());
}());
}());
}());
}());
}());
没有限制。不过,如果你嵌套得足够深,以至于担心限制,我会对整体设计提出质疑。
随心所欲。该概念的名称是闭包,是编程高级javascript时最重要的概念。
只要变量"在作用域中",就可以访问它(假设它没有隐藏)。你可以随心所欲地筑巢。有关MDN的作用域和闭包引用,请参见此处。
就你而言。。
它可能在某个时候会更慢,但应该仍然可以通过回调访问。
Javascript使用函数范围。规则是,如果在顶级函数中设置了变量,则顶级函数中的所有嵌套函数都可以访问该变量。如果在嵌套函数中声明了一个变量,则顶级函数将无法访问该变量。
//Immediately invoked function that scopes jQuery and outside code cannot access
$(function() {
//top-level function
function test() {
var a = true;
//nested function
function nestedTesting() {
//The nested function has access to a
console.log(a);
var b = false;
}
nestedTesting();
//The top level function does not have access to b
console.log(b);
}
test();
});
预期结果:
- 真的
- 未捕获的ReferenceError:b未定义
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 一个定时器事件会在多大程度上减慢我在JavaScript中的代码
- TypeError:熟练程度不是一个函数,但它确实是
- Javascript-一个变量能在多大程度上保持其价值
- 谷歌街景在一定程度上围绕着一个点展开,并看到它的视觉含义
- 如何旋转一个图像与CSS样式转换的程度的变量
- 使用 Angular Factory 保存一个值,以便应用程序的其余部分访问,以最大程度地减少服务器调用
- 如何制作一个按钮,使其只能在一定程度上被拖动