JavaScript之值类型与引用类型

JavaScript中的数据类型可分为两大类

1.值类型:number(数字类型),string(字符串类型),boolean(布尔类型),undefined,null,(symbol ES6新增)
2.引用类型:object(对象),array(数组),function(函数)

值类型与引用类型的区别

值类型:在存储时,变量中存储的是值本身
引用类型:在存储时,变量中存储的仅仅是引用(地址)

堆与栈

栈:由操作系统自动分配释放,存放函数的参数值,局部变量的值等
堆:存储复杂类型,一般由程序员释放,若程序员不释放,由垃圾回收机制回收

基本类型在内存中的存储
var str='苍茫的天涯';
var str1=str;
str='我的爱';

复杂类型在内存中的存储
var p1={
	name:'张三'
}
var p2=p1;
p2.name='李四';

基本类型作为函数的参数
var num1=55;
var num2=66;
function fn (num,num1) {
	num=100;
	num1=100;
	num2=100;
	console.log(num); // 100
	console.log(num1); // 100
	console.log(num2); // 100
}
fn(num1,num2);
console.log(num1); // 55 num1作为参数传入函数fn,值被改变仅限在函数fn内,当函数执行后被销毁,num1的值不变
console.log(num2); // 100 num2的值在函数体内被永久改变,即在外部访问也是改变后的值
console.log(num); // error (num is not defined) 全局中没有名为num的变量被声明
复杂类型作为函数的参数
function Person (name) {
	this.name=name;
}
function f1 (person) {
	person.name='ls';
	person=new Person('ww');
	console.log(person.name); // ww
}
var p=new Person('zs');
console.log(p.name); // zs
f1(p);
console.log(p.name); // ls 参数person指向新的地址,p的指向并没有改变,p的属性name的值为 ls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值