为什么在对象方法中没有var声明的变量不会成为全局变量?

Edg*_*gar 0 javascript

有谁能解释我..

为什么baz没有a宣布哪个var没有成为全球variable

const foo = {
   bar(baz) {

   if (!baz)
   baz = 1;

   }
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

因为它被声明为函数参数1:

const foo = {
   bar(baz) {
//     ^-------- here

       if (!baz)
           baz = 1;
   }
}
Run Code Online (Sandbox Code Playgroud)

(bar是使用ES2015 方法定义语法声明的函数.)

如果它不是参数,例如:

const foo = {
   bar() {
//     ^----------------- no baz
       if (!baz)
           baz = 1;
   }
}
Run Code Online (Sandbox Code Playgroud)

...然后当foo.bar()被调用时,如果baz没有被定义,它将是一个ReferenceError(因为隐含全局 2恐怖仅适用于分配未声明的符号,而不是从它们读取).


1我们经常松散地称这些"论点",但"论证"在技术上是在给定的呼叫中传递的实际值; 有关区别,请参阅MDNWikipedia.

2这是我贫血的小博客上的帖子.