JS 中的值传递和引用传递

1、值传递(值拷贝的传递)

number,string,boolean,null,undefined,Date,function

# number
var a = 1;
var b = a;
b = 2;
console.log(a)  //  a不变,仍为1--->这就是所谓的值拷贝传递
console.log(b)  // 2

# string
var a = '1';
var b = a;
b = '2';
console.log(a)  //  a不变,仍为'1'--->这就是所谓的值拷贝传递
console.log(b)  // '2'

# boolean
var a = true;
var b = a;
b = false;
console.log(a)  //  a不变,仍为true--->这就是所谓的值拷贝传递
console.log(b)  // false

# null
var a = null;
var b = a;
b = 2;
console.log(a)  //  a不变,仍为:null--->这就是所谓的值拷贝传递
console.log(b)  // 2

# undefined
var a = undefined;
var b = a;
b = 2;
console.log(a)  //  a不变,仍为 undefined--->这就是所谓的值拷贝传递
console.log(b)  // 2

# Date
var a = new Date();
var b = a;
b = new Date();
console.log(a)  //  Tue Jun 19 2018 16:12:13 GMT+0800 (中国标准时间)
console.log(b)  // Tue Jun 19 2018 16:12:18 GMT+0800 (中国标准时间)

# function
var a = function() {console.log(1)};
var b = a;
b = function() {console.log(2)};
console.log(a)  //  function() {console.log(1)};
console.log(b)  //  function() {console.log(2)};

2、引用传递(指针值的拷贝)

Object,Array

# Object
var a = { name: 'Diana' }
var b = a;
b.name = 'July'
console.log(a.name) // July
console.log(b.name) // July
 
# Array
var a = [0,1,2,3,4,5,6]
var b = a;
b[1] = 11;
console.log(a) // [0,11,2,3,4,5,6]
console.log(b) // [0,11,2,3,4,5,6]

你可能感兴趣的:(JS 中的值传递和引用传递)