我的头在旋转,有人可以解释一下javascript如何存储变量以及什么是“执行上下文”和“执行上下文对象”吗?
为什么代码片段在控制台上显示以下输出:
你好论点
你好论点
var hello = 'hello is assigned';
function prison(hello) {
console.log(hello);
var hello;
console.log(hello);
}
prison('the hello argument');
谢谢!
这与执行上下文无关,而与函数变量作用域有关。您将其'the hello argument'
作为函数的参数传入并在本地使用,而不是hello
在函数外部声明的var使用。
在var hello
不执行任何操作,如果您正在使用use strict
或棉绒可能会引发警告(试图声明一个现有的变量)。
如果var hello = null;
将其更改为输出,则将看到输出的更改。
现在,如果您具有以下代码:
var hello = 'hello is assigned';
function prison() {
console.log(hello);
var hello;
console.log(hello);
}
prison();
...您将获得undefined
两个日志。这是由于变量吊起-变量声明在执行之前移至函数的开头-因此代码实际上将如下所示:
function prison() {
var hello;
console.log(hello);
console.log(hello);
}
hello
是undefined
在这两种情况下。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句