红宝书的学习历程1-5(引用值,原始值,参数传递,作用域链,执行上下文)

<script>
    //引用值
    let a = new Object();
    a.name = "ni"
   // alert(a.name);//输出ni
    //原始值
    let b ="a";
    b.name = "ni";;
   // alert(b.name);//输出了未定义
    //复制值
    var c = 5;
    var p= c;
     c=c+2
    //console.log(p)//5
    //console.log(c)//7
    //var p 初始化为var c ,他们两个的储存位置不同,所有他们2个是独立的。

    const obj = new Object();
    const big = obj;
    obj.name = "hah";
    //console.log(big.name)//hah
    //obj保存了一个新的对象实例,然后被复制到big,big所复制的东西是一个指针,这个指针就是new object(),他们都是指向储存在堆栈中的对象。

    //传递参数
    function n(num){
        num +=10;
        return num;//返回值
    }
    let count=20;//变量
    let r= n(count);//获取count的值,传值
    console.log(count);//20
    console.log(r)//30,因为+10

    function set(obj){
        obj.name="a";
        obj = new Object();//这里,obj重写了,变成了一个本地的指针,当函数执行完之后,他会自动销毁。
        obj.name="b";
    }
    let person = new Object();
    set(person);
    console.log(person.name);//a
</script>
<script>
    //执行上下文与作用域
    //作用域链
    var color = "blue";
    function changecolor(){
        if(color==="blue"){
            color = 'red';
        }else{
            color="blue";
        }
    }
    changecolor();
    //changecolor包含2个对象,一个是arguments,一个是color(全局上下文对象),通过作用域链能够访问到color。
    var colora ="blue";
    function changecolora(){
        let an = "red";
        function sw(){
            let te = an;
            an = color;
            color = te;
            //一个局部上下文
        }
        sw();//不能访问到te,因为他出去了
    }
    changecolora();//只能访问到colora,因为他在最外面,只能访问到最外面。
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值