/// 引用类型: 复杂类型
// 内存:可以重复利用 定义的变量 数据都是存储在内存中
// 简单类型在内存中存储的时候,存储的是值本身, 所以简单类型也叫值类型
// 栈 堆 (java )
var num = 10;
var str = ‘abc’;
var flag = true;
// new Object()
var obj = {
name: ‘zs’,
age: 18
}
/*
值类型: 简单类型, 因为变量在存储简单类型的时候,直接存储的就是值本身
引用类型: 复杂类型,复杂类型自己会在内存中存储,变量存放的仅仅是这个复杂类型的地址。
*/
3.值类型与引用类型赋值特征
4.值类型与引用类型参数传递
5.面试题
6.值类型与引用类型练习
//面试题1 :
// a -> x
function fn(a, b) {
// 相当于
// var a = 10;
// var b = 20;
// 函数的参数 其实就是函数内部的局部变量
a = a + 1;
b = b + 1;
console.log(a);
console.log(b);
}
var x = 10;
var y = 20;
fn(x, y);
console.log(x);
console.log(y);
//面试题2 :
var p = {
name:“zs”,
age:18
}
function fn(person) {
person.name = ‘ls’;
console.log(person.name);
}
fn§;
console.log(p.name);
//面试题3
function Person(name, age, salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
function f1(person) {
person.name = “ls”;
console.log(person.name);
}
var p = new Person(“zs”, 18, 1000);//创建一个新对象
console.log(p.name);//
f1§;
console.log(p.name);//
//面试题4
function Person(name, age, salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
function f1(person) {
person.name = “ls”;
person = {
name : ‘zs’
}
console.log(person.name);
}
var p = new Person(“zs”, 18, 1000);//创建一个新对象
console.log(p.name);//
f1§;
console.log(p.name);
结论:简单类型存储的是值本身,复杂类型存储的是地址,引入如果把第一个对象赋值给另一个变量,此时两个变量会指向同一个对象。