JavaScript提升和功能范围之间的混淆

如果我没有错误var生命是功能范围,因为它在函数sandeep()中。 但是如果我在console.log(lives)之外的函数之上,那么我仍然会得到控制台的结果 - 新德里为什么? 谁能帮我。 (这是因为吊装吗?它移到顶部......)

没有var的屏幕截图定义里面的功能 在这里输入图像描述

使用var内部函数进行屏幕截图 在这里输入图像描述

屏幕截图 - 在函数调用后编写console.log现在它给出了未定义的 在这里输入图像描述

我得到了我的答案 - 这是我的错误,我的浏览器没有正确刷新。 感谢每一个人的答案。 在这里输入图像描述

console.log("Lives become global variable " + lives); 

function sandeep() {
    lives = "New Delhi";
    return lives;
}
sandeep();

你对这个事实是对的

var life是功能范围

但是你没有在函数中声明变量。 你需要使用var lives = "New Delhi"以便它的范围只在它声明的函数中。

如果您直接分配lives = "New Delhi" ,它将被分配给全局window对象。 打开浏览器控制台,试试这个。

a = 1然后window.a你会发现那个window.a1

让我知道它是否有帮助。


如果我没有错,var生命是功能范围

这是正确的,但你忘了var在生命面前。 如果你将它定义为一个变量,你会得到一个错误:

console.log("Lives become global variable " + lives); 

function sandeep() {
    var lives = "New Delhi";
    return lives;
}
sandeep();
链接地址: http://www.djcxy.com/p/96283.html

上一篇: Bit confused between JavaScript Hoisting and Functional Scope

下一篇: AngularJS scope bug? Different results on chrome(43) and firefox(38.0.5)