- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的标题几乎概括了所有内容。
任何人都可以启发我...
“什么是 JavaScript 中的‘执行上下文’?”
以及它与“this”、提升、原型(prototype)链、作用域和垃圾收集有何关系?
最佳答案
您要问的是几个不是很密切相关的不同概念。我将尝试简要介绍每一个问题。
执行上下文 是语言规范中的一个概念,通俗地说,它大致等同于函数执行的“环境”;也就是说,变量作用域(和 作用域链,来自外部作用域的闭包中的变量)、函数参数和 this
对象的值。
调用堆栈 是执行上下文的集合。
另见 this answer和 this article .
Scope 的字面意思是:可以访问变量的范围。简单地说:
var x;
function a() {
var y;
}
x
可以从任何地方访问。当调用 a
时,x
将在外部范围内。 (存储在作用域链中。)
相比之下,y
只能被a()
中的代码访问,因为它被限制在a
的范围内。这就是 var
关键字的作用:将变量限制在局部范围内。如果我们省略 var
,y
将最终进入全局范围,这通常被认为是一件坏事。
将提升更多地视为编译时的事情。在 JavaScript 中,函数 声明 被“提升”到它们作用域的顶部。换句话说,它们在任何其他代码之前被解析和求值。 (这与内联计算的函数 表达式 相反。)请考虑以下内容:
a();
b();
function a() { }
var b = function() { }
a()
的调用将会成功,因为它的声明被提升到顶部; a
在程序开始执行之前被自动分配给。对 b()
的调用将因 TypeError
而失败,因为 b
直到第 4 行才会定义。
关于javascript - JavaScript 中的 'Execution Context' 到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9384758/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!