zoukankan      html  css  js  c++  java
  • 变量、作用域及内存

    变量只有两种,基本类型和引用类型
    基本类型的值放在栈内存中,引用类型的值放在堆内存中
    基本类型有:Undefined、Null、Boolean和String
    引用类型:Object

    1、基本类型分别操作,互不影响

    var box="lee"
    var box2=box;
    box2="kkk";
    alert(box2);    //kkk
    alert(box);     //lee

    2、引用类型指向同一个地址

    var box=new Object();
    box.name="lee";
    var box2=box;
    box2.name="cc"
    alert(box2.name);    //cc
    alert(box.name);     //cc

    3、传递参数,参数都是按值传送的,没有类型之分

    function box(num){   
        num+=10;
        return num;
    }
    var num=50;
    alert(box(num));     //60
    alert(num);          //50

    4、参数作为引用类型的例子

    function box(obj){  
        obj.name="lee";
        var aa=new Object();
        aa.name="kkk";
    }
    var cc=new Object();
    box(cc);
    alert(cc.name);    //lee

     5、全局变量和局部变量

    全局变量就是window,所以全局变量都是window下的属性,可以用window.来访问

    var box="lee";
    function serBox(){
        var box="red";   //这是局部变量,他们的范围在serBox()里,出来就不认识了
    }
    alert(box);   //"lee"  
    serBox();
    alert(box);   //"lee" 

    但是如果要是去掉var就变成全局的了

    var box="lee";
    function serBox(){
        box="red";   //没有初始化,又调用的全局的
    }
    alert(box);   //"lee"  
    serBox();
    alert(box);   //"red" 

    如果传参,作用域也在局部

    var box='lee';
    function serBox(box){
        alert(box);
    }
    serBox('red');
    alert(box);

    函数体内包含函数,只有这一层才能访问局部函数

    var box='lee';
    function serBox(){
        function setColor(){    //setColor()作用域在serBox()内
            return 123;
        }
        return setColor();
    }
    alert(serBox());    //123
    var box='lee';
    function serBox(){
        return setColor();
        function setColor(){    //setColor()作用域在serBox()内
            var b="kkk";        //b的作用域在setColor()里
            alert(b);        
            return 123;
        }
    
    }
    alert(window.serBox());    //kkk 123

    在变量查询中,访问局部变量要比全局变量要快,因为不需要向上搜索作用域

    var age=28;
    function box(){
        //var age=26;    如果有他,打印26,一旦查询到,不会继续向上查找
        return age;
    }
    alert(box());    //28
  • 相关阅读:
    镇中7日做题小结 day2
    镇中7日做题小结 day1
    关于开通luogu博客
    bitset用法和ch2101可达性统计
    离散化 下标与数值的深入理解
    黄题 P2038 无线网络发射器选址 被坑之痛
    最蒟蒻bug,没有之一
    http://www.laomaotao.net/?H4068
    C++设计模式——简单工厂模式
    面向对象的七个基本设计原则
  • 原文地址:https://www.cnblogs.com/change-oneself/p/5030608.html
Copyright © 2011-2022 走看看