• javascript声明对象时 带var和不带var的区别


    2015/11/25补充: 关于变量声明这里有详细的解释:

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/var

    一个比较好的全面关于Javascript的文档说明. 推荐喜欢或正在学习Javascript的朋友每一个部分都

    详细的看看. 之前很多模糊的概念都能在这里得到清晰的答案.

    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    Javascript声明变量时

    var aaa = 111;

    aaa = 111;

    两种方式一样吗?

    废话少说,先上代码.

    var aaa = 11;
    
    function test4(){
        var aaa = 22;
    }
    
    test4();
    
    console.log(aaa);

    结果是什么呢?

    11

    这个好理解, 函数内的var aaa声明是内部变量,这时结果是第一个aaa的值.

    变动一下如下:

    var abc = 11;
    
    function test4(){
        abc = 22;
    }
    
    test4();
    
    console.log(abc);

    结果是什么呢?

    22

    再改:

    function test4(){
        var aaa = 22;
    }
    
    test4();
    
    console.log(aaa);

    结果怎样? 运行报错了! ReferenceError: aaa is not defined!

    改:

    function test4(){
        var aaa = 22;
    }
    
    test4();
    
    console.log(test4.aaa);

    运行不会报错,输出结果是 undefined.

    结论1: 函数或者对象构造内声明的变量是私有的. 外部无法访问到. 包括原型继承后的对象. 见前一篇文章.

    可是如果这样:

    function test4(){
        bbb = 33;
    }
    
    test4();
    
    console.log(bbb);

    结果是

    33

    点解?

    这就是有var 和没有 var的声明的区别.

    结论2: 不加var 在函数或者构造内就是赋值, 从函数内往上一层层寻找变量bbb,一直到顶层没有. 就在顶层声明一个 var bbb;

    很可怕假如一个大的项目,在这里改变了bbb的值, 并没有添加var 碰巧整个项目全局变量有个同名bbb被改变,不加var不是只作用在这个函数或对象内. 出了错误很难找.

    所以书写代码必须谨慎. 声明变量改加的就加不能怕麻烦. 结果是完全不同的.

    追加:

    2015-10-20

    var 声明的全局变量。 和隐式声明(没有用var)声明的全局变量的区别:

    var 声明的全局变量不能 delete  隐式声明的(没有用var)的可以使用delete删除掉。

     
  • 相关阅读:
    Java Swing打猎射击游戏源码
    php实现在线下载程序安装包功能
    WP
    双人对战的球类游戏IOS源码
    非常不错的新闻客户端应用安卓源码
    创业建议:如何写挖人邮件
    wp8路线跟踪应用源码详细说明
    wp版笔记本应用源码
    旅游风景展示应用源码iPad版
    bitset优化背包
  • 原文地址:https://www.cnblogs.com/dangkei/p/4884539.html
Copyright © 2020-2023  润新知