前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript变量:全局?还是局部?这个得注意

javascript变量:全局?还是局部?这个得注意

作者头像
令仔很忙
发布2018-09-14 15:45:22
3300
发布2018-09-14 15:45:22
举报
文章被收录于专栏:令仔很忙令仔很忙

在JS中,是没有块级作用域的

      举两个个例子:

      if语句块:    

代码语言:javascript
复制
if (true){
	var name='Ling';
}
alert(name);

输出:Ling

      for语句块;

代码语言:javascript
复制
for(var i=0;i<10;i++) {
	var name='Ling';
}
alert(i);
alert(name);

输出:10

输出:Ling

也就是说最后的结果都是window下全局变量:

代码语言:javascript
复制
<span style="font-family:KaiTi_GB2312;">alert(window.i);
alert(window.name);</span>

在Javascript的函数体中,有下面几种情况需要注意:

      1、有无Var

        如果有Var,在函数内部声明变量是局部变量,如下例,读取不到name的数据。

代码语言:javascript
复制
<span style="font-family:KaiTi_GB2312;">function box(){
	var name ='Ling';
}
alert(name);</span>

        如果把var去掉的话,那么就会输出:Ling,此时声明的变量为全局变量。在写代码的过程中,不适用var就初始变量的话,会有很多意外发生,所以初始变量的时候一定要加上var。

       2、全局变量和局部变量命名相同    

代码语言:javascript
复制
<span style="font-family:KaiTi_GB2312;">var scope="global";  
function t(){  
    alert(scope);  
    var scope="local"  
    alert(scope);  
} </span>

    最终的输出结果是:

               undefined

               local

   为什么会出现这样的结果?因为:

   javascript 变量范围 (1)全局变量的作用域是全局性的,即在整个Javascript程序中,全局变量作用处处都存在。定义在”script”块中,在”function”函数外。 (2)局部变量的作用域是局部性的,在函数内部或函数参数时定义,作用范围是从函数开始到结尾(注意此处说法) (3)在函数内部,局部变量的优先级比同名的全局变量优先级要高;如果存在与全局变量名称相同的局部变量(包括参数),那么该全局变量将不再起作用。

  原来是这个原因。不知道你看明白了没有~~

  那么当全局变量和局部变量重名时,怎么解决这个问题呢?

  哈哈~~最简单的当然就是避免全局变量和局部变量相遇咯~~

  还有另外一种方法,window对象的所有属性拥有全局作用域,用window.全局变量名,如下:

代码语言:javascript
复制
<span style="font-family:KaiTi_GB2312;">var scope="global";  
function t(){  
    alert(window.scope);  
    var scope="local"  
    alert(scope);  
}  </span>

至此,问题也就说完了。

总结

上面的问题其实也反映的另一个问题,命名规范的问题,如果命名不规范,就会出现很多意想不到的问题,所以,花点时间上网查查几种不同的命名的规范,这样能在你编写代码的时候减少不必要的麻烦。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年10月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在JS中,是没有块级作用域的
  • 在Javascript的函数体中,有下面几种情况需要注意:
    •       1、有无Var
      •        2、全局变量和局部变量命名相同    
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档