开门见山,先考虑下面这个问题
1 var color = 'red';
2 var style = {width: 200, height: 300};
3 var colorList = ['black', 'red'];
4 function change (color, style, colorList) {
5 color = 'black'
6 style = {width: 400, height: 600};
7 colorList.push('green')
8 }
9 change(color, style, colorList)
10 console.log(color, style, colorList) // red {width: 200, height: 300} ["black", "red", "green"]
首先,在不知道输出结果条件下,我们可以先假设函数调用执行时传入的参数(即第9行)即为函数定义时的参数(第4行)。通过函数内部对三个参数的修改(5,6,7行),在最后的输出时(10行),结果应该是修改后的值,即
color => black
style => {width: 400, height: 600}
colorList => ["black", "red", "green"]
但是通过对比,我们发现这种假设得出的结果与实际的输出不符。
其