带有Var的Javascript作用域
我不知道我的方法和“正确的方法”有什么区别。我得到我的方式是错误的范围,但它是如何产生的结果呢?我不明白结果是怎么出来的 以下是函数:带有Var的Javascript作用域,javascript,Javascript,我不知道我的方法和“正确的方法”有什么区别。我得到我的方式是错误的范围,但它是如何产生的结果呢?我不明白结果是怎么出来的 以下是函数: convertObjectToList({ name: 'Holly', age: 35, role: 'producer' }); 想要的答案:[['name'、['Holly']、['age',35]、[role'、[producer']] 我的方式: function convertObjectToList(obj) {
convertObjectToList({
name: 'Holly',
age: 35,
role: 'producer'
});
想要的答案:[['name'、['Holly']、['age',35]、[role'、[producer']]
我的方式:
function convertObjectToList(obj) {
var brackOut = [];
var brackIn = [];
for (let key in obj) {
brackIn.push(key);
brackIn.push(obj[key]);
brackOut.push(brackIn);
}
return brackOut;
}
convertObjectToList({
name: 'Holly',
age: 35,
role: 'producer'
});
结果:
[ [ 'name', 'Holly', 'age', 35, 'role', 'producer' ],
[ 'name', 'Holly', 'age', 35, 'role', 'producer' ],
[ 'name', 'Holly', 'age', 35, 'role', 'producer' ] ]
vs
“正确的方法”:
function convertObjectToList(obj) {
var brackOut = [];
for (let key in obj) {
var brackIn = [];
brackIn.push(key);
brackIn.push(obj[key]);
brackOut.push(brackIn);
}
return brackOut;
}
convertObjectToList({
name: 'Holly',
age: 35,
role: 'producer'
})
结果:
这和变量的范围有关,但有人能解释我的答案是怎么得到的吗?这是如何工作的?实际上brackIn
在这两种情况下的作用域都是相同的。重要的是在循环内部为brackIn
分配一个新数组:
var brackIn;
for(let key in obj) {
brackIn = []; // <<< !!!
//...
}
var-brackIn;
用于(输入obj){
布拉金=[]//