请在javascript中自动解释全局
我无法理解自动全球化背后的理念。我正在阅读以下内容:请在javascript中自动解释全局,javascript,Javascript,我无法理解自动全球化背后的理念。我正在阅读以下内容: 调用函数myFunction()。如果我删除此调用,它将不显示任何内容。我不明白为什么调用myFunction()是myFunction()中未声明的变量自动全局的必要条件。似乎没那么直观 它的意思就是在这个代码中: function myFunction() { carName = "Volvo"; } carName在执行后存在于myFunction之外,可供其他代码使用。鉴于: function myFunction()
调用函数myFunction()。如果我删除此调用,它将不显示任何内容。我不明白为什么调用myFunction()是myFunction()中未声明的变量自动全局的必要条件。似乎没那么直观 它的意思就是在这个代码中:
function myFunction() {
carName = "Volvo";
}
carName
在执行后存在于myFunction
之外,可供其他代码使用。鉴于:
function myFunction() {
var carName = "Volvo";
}
carName
仅存在于myFunction
中,即使在调用之后也是如此。myFunction之外的代码看不到它。它的意思就是在这个代码中:
function myFunction() {
carName = "Volvo";
}
carName
在执行后存在于myFunction
之外,可供其他代码使用。鉴于:
function myFunction() {
var carName = "Volvo";
}
carName
仅存在于myFunction
中,即使在调用之后也是如此。myFunction外部的代码看不到它。当您“声明”一个没有显式声明关键字(var/let/const)的变量时,您的意图是引用一个可能在更高范围内的现有变量还是声明一个新变量,这一点是不明确的。JavaScript早期的许多定义行为都是为了实现灵活性而尝试使用回退行为。当一个变量被指定给但没有现有的引用时,它会返回到创建变量。如果没有任何declaration关键字,就无法推断您想要的范围在哪里,因此它会在全局范围中创建它,以便其他可能的引用可以找到它
在您的例子中,当您调用函数时,它引用了一些变量。JavaScript不知道这是否已经存在,所以它在全局范围内创建它。因此,在调用方法后,它仍然在范围内且可引用。当您“声明”一个没有显式声明关键字(var/let/const)的变量时,您的意图是引用一个可能在更高范围内的现有变量,还是声明一个新变量,这一点存在一些模糊性。JavaScript早期的许多定义行为都是为了实现灵活性而尝试使用回退行为。当一个变量被指定给但没有现有的引用时,它会返回到创建变量。如果没有任何declaration关键字,就无法推断您想要的范围在哪里,因此它会在全局范围中创建它,以便其他可能的引用可以找到它 在您的例子中,当您调用函数时,它引用了一些变量。JavaScript不知道这是否已经存在,所以它在全局范围内创建它。因此,在调用方法后,它仍然在范围内且可引用。表达式
var varName = 'value';
使用var varName
声明变量,然后使用='value'
表情
varName = 'value';
只需将赋值'value'
设置为变量“varName”,该变量应在前面声明
所以
在本地声明变量varName
,并使用'a'
但是
只需为变量varName
赋值'b'
。但是变量varName
要在paren全局范围内声明。表达式
var varName = 'value';
使用var varName
声明变量,然后使用='value'
表情
varName = 'value';
只需将赋值'value'
设置为变量“varName”,该变量应在前面声明
所以
在本地声明变量varName
,并使用'a'
但是
只需为变量
varName
赋值'b'
。但是变量varName
要在paren全局范围内声明。哦,我明白了,它需要先执行…嗯,我想这会让senseRight,如果你从来没有运行myFunction
,carName
在任何范围内都不存在。哦,我明白了,它需要先执行…嗯,我想这会让senseRight,如果您从未运行过myFunction
,carName
在任何范围内都不存在。的可能重复