javascript变量作用域

基本类型值:var name = "lixiaolong";//不能对基本类型值添加删除属性
引用类型值:var person = new Object(); person.name="lixiaolong";//引用类型值可以添加和删除属性


复制变量值
1:基本类型值
var name1 = 11;
var name2 = name1;
//基本类型值之间的复制之后 , 两个变量之间不再有任何关系


2:引用类型值
var obj1 = new Object();
var obj2 = obj1;
obj1.name = "lixiaolong";
//obj2.name = "lixiaolong";
//此时obj1和obj2指向同一个对象 修改任何一个对象都会对另外一个对象造成影响
//这个问题经常出现在新手中,因为对象的复制问题而造成的错误


传递参数
//把函数外部的值赋值给函数内部的值,就和把值赋值给另外一个变量一样。
//基本类型值的赋值就和基本类型变量的赋值一样
//引用类型值的赋值就和引用类型变量的赋值一样
举例:
//基本类型值参数
function addTen( num ){
    num += 10;
    return num; 
}
var count = 20;
var result = addTen( count );
console.log('result:',result);
//这种值的参数 不会对外部参数造成影响


//引用类型值参数
var person = new Object();
function setName( obj ){
    obj.name=" lixiaolong ";


    obj = new Object();
    obj.name = "huanfeihong";
}
setName( person );//此时函数内部的obj和person指向的是同一个对象
//对象作为参数传递进去后,在函数内部的修改会对对象造成影响
/*
此时person.name = "lixiaolong" 而不是huangfeihong
原因是对象是按值传递的
虽然函数中对obj重新定义,但此时的obj不再指向原来的obj了,而是引用的另外一个临时变量
一旦函数退出,此对象就会被销毁
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值