javascript - 为什么这显示出变量提升的行为?

标签 javascript hoisting

啥也不说了,看代码就够了:

JS:

var myvar = "my value";

(function (){
    console.log(myvar); //returning undefined
    var myvar = "local value";
})();

现在一个非常简单的问题:变量 myvar是在函数执行之前声明的,为什么控制台显示未定义?

最佳答案

您有两个名为 myvar 的变量。一个在函数内,一个在函数外。

在函数内部,您可以访问函数内部声明的函数(正如您所说,它已被提升)。此时尚未为其分配值,因此它是未定义

一行后,您为其分配一个值。

关于javascript - 为什么这显示出变量提升的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35414059/

相关文章:

java - 需要将控制从 Action 类发送到 JSP

javascript - 动态设置 `a href` 元素

javascript - 动态输入框格式

javascript - js中的函数提升

javascript - ES6 模块导入是否挂起?

javascript - javascript 中的作用域和闭包异常

javascript - 点击图片不改变

javascript - 在 Google Maps API V3 中复制标记图标

javascript - 你能澄清一下这个 JavaScript 变量提升行为吗?