好吧,这只是一个快速的...我可以完全理解范围。每当我把一个变量放在一个函数里面时,它都是未定义的。它似乎是唯一的方式来声明它的函数OUTSIDE。什么给出了什么?我只是误解了局部变量和全局变量的概念吗?因为似乎全局变量是唯一有效的...
编辑:
简单的例子......
let a = 'something';
function myFunction() {
// Code block
};
这有效
但下面给出了未定义的变量:
function myFunction() {
let a = 'something';
// Code block
};
答案 0 :(得分:4)
首先让我们来看看局部变量和全局变量之间的差异。
LOCAL VARIABLES - 在函数或循环内定义的任何变量。如果变量是在某个函数/循环中定义的,则只能在该函数/循环中访问它。
例如:
function number() {
let a = 0;
// Can access a here.
}
// Cannot access a here.

GLOBAL VARIABLES - 任何未在任何函数或循环内定义的变量。这些变量可以在任何地方访问。
例如:
let b = 0;
function number() {
// b can be accessed here.
}
// b can be accessed here.

变量的范围是可以访问它的位置。例如,function number()
内定义的局部变量的范围是number()
函数,因为它只能在那里访问
另一个快速的事情(感谢Mikael Lennholm)var
没有将变量范围限定为循环(或任何非函数语句块),它只将其范围限定为当前函数。要将变量范围限定为任何语句块,您必须使用let/const
现在让我们来看看你的例子:
这是第一个例子:
let a = 'something';
myFunction();
function myFunction() {
console.log(a);
};

这很好,这就是你所说的。
这是你说的第二个例子:
function myFunction() {
let a = 'something';
console.log(a);
};
myFunction();

但是,如果单击“运行”按钮,您实际上会看到它确实有效,它会被记录下来。如果您在此之后转到并在控制台中检查变量a
当然是未定义的,因为a
只能在myFunction()
函数中访问,并且控制台不是在那个职能部门。
你说脚本不起作用,很可能是因为别的东西(如果是因为这样,控制台就会出错)。您可以尝试在这里发布网站,我可以帮助您。
希望这有助于你:)
答案 1 :(得分:1)
全局变量是您可以在代码中的任何位置访问它们的变量。
局部变量仅限于它们的范围,如函数,模块,类等。
如果你定义一个局部变量,它可以在嵌套级别访问,如闭包。
如果您定义了一个全局变量并且您定义了与本地变量相同的名称,则本地覆盖全局变量,那么请小心。