通过一个案例简述js中变量及函数的作用域的原理。
1 | alert(x); // function ① |
由于js中,所有的var声明会被提前到顶部,并且,变量的作用域是没有块级作用域,所以a和b的作用域实际上是全局的。这段代码实际的执行顺序大致如下:
1 | var x; |
① var x 被 function x() {} 覆盖;
⑤ b被声明,但未赋值,所以是undefined,而不是报未声明的错误。
通过一个案例简述js中变量及函数的作用域的原理。
1 | alert(x); // function ① |
由于js中,所有的var声明会被提前到顶部,并且,变量的作用域是没有块级作用域,所以a和b的作用域实际上是全局的。这段代码实际的执行顺序大致如下:
1 | var x; |
① var x 被 function x() {} 覆盖;
⑤ b被声明,但未赋值,所以是undefined,而不是报未声明的错误。