为什么没有在object方法中声明var的变量不会成为全局变量
Why variable declared without a var in object method does not become a global variable?
谁能解释一下……
为什么没有声明var
的baz
没有成为全局variable
?
const foo = {
bar(baz) {
if (!baz)
baz = 1;
}
}
因为它被声明为函数参数1:
const foo = {
bar(baz) {
// ^-------- here
if (!baz)
baz = 1;
}
}
(bar
是使用ES2015方法定义语法声明的函数)
如果它不是参数,例如:
const foo = {
bar() {
// ^----------------- no baz
if (!baz)
baz = 1;
}
}
…那么当调用foo.bar()
时,如果baz
没有定义,它将是ReferenceError
(因为隐式全局变量2只适用于将赋值给未声明的符号,而不是从它们读取)。
1我们经常称这些为"参数",但从技术上讲,"参数"是在给定调用中传递的实际值;请参阅MDN和维基百科了解其区别。
2这是我贫血的小博客上的一篇文章。
因为它是一个参数
将它包含在函数声明中隐式地声明它用于给定的函数作用域。
因为您将其设置为函数的参数。为了使var成为"全局的"(这可能会削弱程序的弹性,应该避免),你应该在函数之外声明它。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- AngularJS中的封装窗口全局变量
- javascript隐式全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 如何使全局变量仅特定于该文件
- 在page.open()-PhantomJS中无法访问全局变量
- 使用全局变量来存储数字(JavaScript)
- 如何将变量声明为全局变量
- 在节点中创建文件全局变量
- 在Javascript中使用全局变量作为缓存是很好的
- 创建要在其他函数中使用的全局变量
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 函数中的innerHTML(全局变量?)
- 如何在javascript中为全局变量赋值
- 全局变量只能由第一个函数访问
- 当javascript中的条件变量(全局变量)发生变化时,停止循环