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

简介: <h1> <span style="font-size:18px">     </span><span style="font-size:24px">在JS中,是没有块级作用域的</span></h1> <p><span style="font-size:18px">      举两个个例子:</span></p> <p><span style="font-size:18px"> 

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

      举两个个例子:

      if语句块:    

if (true){
	var name='Ling';
}
alert(name);
输出:Ling


      for语句块;  

for(var i=0;i<10;i++) {
	var name='Ling';
}
alert(i);
alert(name);

输出:10

输出:Ling


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

<span style="font-family:KaiTi_GB2312;">alert(window.i);
alert(window.name);</span>


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

      1、有无Var

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

<span style="font-family:KaiTi_GB2312;">function box(){
	var name ='Ling';
}
alert(name);</span>
        如果把var去掉的话,那么就会输出:Ling,此时声明的变量为全局变量。在写代码的过程中,不适用var就初始变量的话,会有很多意外发生,所以初始变量的时候一定要加上var。

     

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

<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.全局变量名,如下:

 

<span style="font-family:KaiTi_GB2312;">var scope="global";  
function t(){  
    alert(window.scope);  
    var scope="local"  
    alert(scope);  
}  </span>

至此,问题也就说完了。


  总结

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

     

      


    

       

       

相关文章
|
4月前
|
JavaScript 前端开发
JavaScript如何判断变量undefined
JavaScript如何判断变量undefined
|
4月前
|
JavaScript 前端开发
JavaScript基础知识-变量的声明提前
关于JavaScript变量声明提前特性的基础知识介绍。
51 0
JavaScript基础知识-变量的声明提前
|
2月前
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
|
2月前
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
|
2月前
|
前端开发 JavaScript UED
如何使用 JavaScript 动态修改 CSS 变量的值?
【10月更文挑战第28天】使用JavaScript动态修改CSS变量的值可以为页面带来更丰富的交互效果和动态样式变化,根据不同的应用场景和需求,可以选择合适的方法来实现CSS变量的动态修改,从而提高页面的灵活性和用户体验。
|
4月前
|
存储 前端开发 JavaScript
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
本文介绍了JavaScript变量的声明和使用、标识符的命名规则、如何获取和操作HTML元素,以及JavaScript的鼠标事件处理,通过示例代码展示了这些基础知识点在实际开发中的应用。
52 2
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
|
3月前
|
JavaScript 前端开发
局部 JavaScript 变量
JavaScript 中,函数内部使用 `var` 声明的变量为局部变量,仅在函数内可见,函数执行完毕后被删除。全局变量则在函数外部声明,整个页面的脚本和函数均可访问,页面关闭后才被删除。未声明的变量赋值会自动成为 `window` 对象的属性,且在非严格模式下可被删除。
|
4月前
|
JavaScript 前端开发
js 变量作用域与解构赋值| 22
js 变量作用域与解构赋值| 22
|
3月前
|
JavaScript 前端开发
什么是JavaScript变量?
什么是JavaScript变量?
43 0
|
4月前
|
存储 JavaScript 前端开发