原始值
: 就是简单的数据
引用值
:多个值构成的对象
// 原始值:保存的是具体的值
let a = 2;
let a1 = true;
// 在js中字符串是原始值不是引用值
let a2 = 'haha';
// 引用值:保存的是一个地址值
let p = new Object();
动态属性:
引用值是可以动态添加属性的,原始值不可以
let person = new Object();
person.name = '张三';
console.log(person.name); // 张三
原始值也可以这么写不报错但是不生效
let name = '李四';
name.age = 25;
console.log(name.age); // undfined
参数传递:
ECMAScript规定:所有函数的参数都是值传递
在函数执行的时候函数外面的值会被复制到函数内部的参数中。就跟变量赋值是一样的:如果变量是原始值,则会生成跟原始值一样的副本;如果是引用值,则会复制引用值的指针也就是地址值。
值传递的时候,值就会被复制到一个局部变量。
function add(num) {
num += 10;
return num
}
let count = 20;
let res = add(count);
console.log(res); // 30
console.log(count); // 20
如果函数参数是引用值就有变化了
function setName(obj) {
obj.name = 'zhangsan';
return obj;
}
let p = new Object();
let res = setName(p);
console.log(p.name); // zhangsan
console.log(res); // {name: 张三}