形参传递和解构赋值

832 阅读1分钟
形参传递和解构赋值
console.log("形参传递");
let number = 100;
let str = "kate";
let booleanExample = true;
let nullExample = null;
let undefinedExample = undefined;

值传递

function addS(a) {
    a = a + 's';
    console.log(a);
}
addS(number);// 100s
console.log(number);// 100 值未改变
addS(str);// kates
console.log(str);// kate
addS(booleanExample); // trues
console.log(booleanExample);// true
addS(nullExample);// nulls
console.log(nullExample);// null
addS(undefinedExample);// undefineds
console.log(undefinedExample);// undefined

基本类型如Number,String,Boolean, Null, Undefined在调用函数时,进行的是值传递,不会影响原来的值。

let obj = {
    name: 'kate'
}
function changeName(a){
    a.name = 'Alice';
    console.log(a);
}
changeName(obj); // {name: "Alice"}
console.log(obj);// {name: "Alice"}

引用类型如Object,Function,Array在调用函数时,进行的是引用传递,会影响原来的值。

解构赋值用法
基本用法
let students = {
    name: 'Lily',
    age: 15
}
let {name} = students;
console.log(name);// Lily

解构赋值用于数组时,可直接取出数组中某一项的值

let [a, b] = [1, 2, 3];
console.log(a);// 1
console.log(b);// 2

解构赋值和...一起使用时,可用于对对象和数组的浅复制

let tmp = {
    age: 20,
    name: 'Jack'
}
let copy = { ...tmp };
console.log(copy);// {age: 20, name: "Jack"}
copy.age = 25;
console.log(copy);// {age: 25, name: "Jack"}
console.log(tmp);// {age: 20, name: "Jack"}

解构赋值相当于对象的浅复制,不会影响原对象的值。

let nums = [1,2,3];
let numsCopy = [...nums];
numsCopy.push(4);
console.log(numsCopy);// [1, 2, 3, 4]
console.log(nums);// [1, 2, 3]