词法作用域与动态作用域

JavaScript使用词法作用域(lexial scope)又叫静态作用域:

 

词法作用域(lexial scope)/静态作用域(static scope)是在书写代码或者说定义时确定的,而动态作用域是在运行时确定的。 词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用,其作用域链是基于运行时的调用栈的。

代码示例:

 

 

 

================================================================================

 

javascript加var和不加var的区别:

 

JS中变量声明分显式申明和隐式声明。

  var num=100;//显式

  num=100;//隐式

在函数中使用var关键字进行显式声明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。

当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量,这一点一定要注意。

不加var的写法是不推荐的。
1.  语义不清楚。 
2.  团队开发时,容易覆盖掉其它作用域内的变量,引发异常。
3.  给window对象添加不必要成员。  

 

posted @ 2018-06-02 10:16  hh9515  阅读(309)  评论(0编辑  收藏  举报