以下代码的执行结果是什么?
function funcA(data) {
data.key = 'data';
}
function funcB(data) {
data = {};
data.value = 'data';
}
var data = { key: 'key', value: 'value' };
funcA(data);
funcB(data);
console.log(data.key);
console.log(data.value);
function funcA(data) {
data.key = 'data';
}
function funcB(data) {
data = {};
data.value = 'data';
}
var data = { key: 'key', value: 'value' };
funcA(data);
funcB(data);
console.log(data.key);
console.log(data.value);
'key', 'value'
'data', 'data'
'data', 'value'
undefined, 'data'
function funcA(data) { data.key = 'data'; } function funcB() { // 把函数的这个data参数去掉,结果就是D选项了 data = {}; // 这个data虽然在函数里面,但是并没有用var 声明,所以算是全局变量,会把var 声明的全局变量替换 data.value = 'data'; } var data = { key: 'key', value: 'value' }; // 用 var声明的全局变量 funcA(data); funcB(data); console.log(data.key); console.log(data.value);
function funcA(data) { data.key = 'data';//此data就是参数data } function funcB(data) { data = {}; //这里的data是一个新的data,并不是参数data,是函数里面的data,所以并不会改变全局data的值 data.value = 'data'; } var data = { key: 'key', value: 'value' }; funcA(data); funcB(data); console.log(data.key); console.log(data.value); 所以输出结果是data value