`
jiahh
  • 浏览: 38962 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

js中成员变量 和局部变量发生奇怪的问题

阅读更多


//当局部变量重新定义和成员变量重名,成员变量将是undefined
<script type="text/javascript">
          var a=1;   
          function aa(){
          alert('aaaaaaa'+a);   //这边答应undefined
           alert(!a);           //这边居然打印true
           if(!a){
             var a = 10;
           }
           alert(a);            //这边居然打印10.。。。
          }
          aa();
</script>



var a = 1;
function b()
{
a = 10;
alert('aaaa'+a);
return;
function a() {}
}
b();
alert(a);    //这边居然打印1.。。汗。。。。。
                         
0
0
分享到:
评论
1 楼 wjzsuperman 2013-02-05  
这个我是这么认为的:js函数中变量的作用域范围是整个函数,比如:
if(1){
var ff='123';
}
alert(ff);   //打印123
变量ff虽然是在if语句块中定义的,但是他在脱离了if语句之后也是有作用的,
js在编译的时候会将函数中所有的定义语句提到函数开头,所以你上面的例子结果都是正确的。
第一个相当于: var a=1;   
          function aa(){
           var a;        
           alert('aaaaaaa'+a);   //这边答应undefined
           alert(!a);          
           if(!a){
             var a = 10;
           }
           alert(a);            
          }
          aa();
第二个相当于:
var a = 1;
function b()
{
var a;//这是由于你下面定义了一个a函数
a = 10;
alert('aaaa'+a);
return;
function a() {}
}
b();
alert(a);


这个只是我的个人理解 ,有误请指正   

相关推荐

    成员变量和局部变量

    在类中的位置不同 成员变量:在类中方法外 局部变量:在方法内或者方法声明处 在内存中的位置不同 成员变量:在堆内存中 局部变量:在栈内存中 ... 成员变量和局部变量的名称可以一致,方法调用的时候采取就近原则

    75.java成员变量与局部变量.zip

    75.java成员变量与局部变量.zip75.java成员变量与局部变量.zip75.java成员变量与局部变量.zip75.java成员变量与局部变量.zip75.java成员变量与局部变量.zip75.java成员变量与局部变量.zip75.java成员变量与局部变量....

    final修饰成员变量和局部变量.md

    本文章是关于final部分知识所作的自我总结,内容为final对成员变量和局部变量修饰的简要解答,除了对自我java学习的一个小结,也希望能够帮助到在java路上对该内容疑惑的同行

    第04章 面向对象(上) 05 成员变量和局部变量

    在这一章中,我们将深入探讨面向对象中的一个重要概念:成员变量和局部变量。这两个概念是理解类和对象行为的关键。 首先,我们来讨论成员变量。成员变量,也称为实例变量,是定义在一个类中的变量。它们可以存储类...

    Java成员变量类变量局部变量的区别共5页.pdf.zip

    - 存储位置:成员变量和类变量存储在堆内存中,而局部变量存储在栈内存中。 - 生命周期:成员变量和类变量的生命周期与对象或类的生命周期相关,局部变量的生命周期与方法调用相关。 - 访问权限:成员变量和类变量...

    c语言全局变量和局部变量问题汇总

    ### C语言全局变量和局部变量问题汇总 #### 概述 在C语言编程中,变量是存储数据的基本单元。根据其作用范围的不同,可以将变量分为两大类:全局变量(Global Variables)与局部变量(Local Variables)。理解这两...

    Java成员变量局部变量静态变量成员方法全局方法等概念的区

    成员变量和局部变量用于存储数据,而成员方法和静态方法则用于执行操作。在设计类时,应根据数据和行为的关联来决定变量和方法的类型。合理地使用静态和非静态成员,可以帮助优化内存使用,同时保持代码的整洁和高效...

    java 成员变量与局部变量的区别(csdn)————程序.pdf

    Java编程语言中有两种主要的变量类型:成员变量和局部变量,它们在定义、作用范围、默认值、内存位置以及生命周期方面都有所不同。 首先,**定义的位置**是两者最基本的区别。成员变量,也称为实例变量,是定义在类...

    局部变量 与 全局变量

    通过代码的运行,并理解代码,明白C中的局部变量与本地变量的区别

    全局变量、局部变量、静态全局变量、静态局部变量的区别

    2. **生命周期**:全局变量和静态全局变量在整个程序运行期间都存在,而局部变量和非静态局部变量在其所属函数调用结束后即被销毁。 3. **初始化和存储位置**:静态局部变量和静态全局变量在程序加载时只初始化一次...

    静态全局变量,静态局部变量,全局变量,局部变量

    - **面向对象设计中的static**关键字用于定义类的静态成员变量和静态成员函数,这些成员与类本身相关,而不是与某个特定对象实例相关。 理解这些变量类型及其特点有助于编写更高效、更安全的代码。

    全局变量、局部变量、静态变量即内存管理

    在这五个部分中,全局变量、静态变量、局部变量和堆区中分配的变量都是程序中最常用的变量类型。 全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量...

    浅谈静态变量、成员变量、局部变量三者的区别

    值得注意的一点是,如果局部变量和成员变量同名,那么在方法内部,局部变量会覆盖成员变量的引用,遵循“就近原则”。因此,当在方法内使用变量时,应确保清楚地知道正在访问哪个变量。 总之,理解这三种变量类型...

    06_JavaSE面试题:成员变量与局部变量.avi

    06_JavaSE面试题:成员变量与局部变量

    C语言全局/局部变量

    在C语言中,全局变量和局部变量是程序中存储数据的两种主要方式,它们各自具有独特的特性和使用场景。理解并熟练运用这两种变量对于进行C语言单片机编程至关重要。 全局变量是在函数外部定义的变量,它在整个程序的...

    Python语言基础:局部变量和全局变量.pptx

    总结,理解局部变量和全局变量的区别以及它们如何在不同作用域中工作,有助于编写清晰、无误的Python代码。在编写程序时,应该谨慎使用全局变量,因为它们可能会导致难以追踪的错误,特别是在大型项目中。通常,推荐...

Global site tag (gtag.js) - Google Analytics