【发布时间】:2016-12-03 21:08:36
【问题描述】:
我想通过函数设置window.userName变量值,但是失败了:
function changeName(variable) {
variable = "Bill";
}
changeName( window.userName );
console.log( window.userName ); // outputs undefined
我如何将 window.userName 变量引用传递给函数,或者您建议用它做什么?
任何帮助将不胜感激。谢谢!
这里是代码 sn-p,向您展示了该操作的主要思想:
var data = [{
"name": "Bill",
"location": {
"latitude": "12.4124",
"human_address": {
"address": "Blabla St. 13",
"city": "Moscow"
},
"longitude" : "51.2512"
}
},
{
"name": "James",
"location": {
"human_address": {
"city": "Moscow"
}
}
}];
var allColumns = {};
function loopInto(targetObj, obj) {
for (var k in obj) {
if (!(k in targetObj)) {
targetObj[k] = true;
}
if (typeof obj[k] == "object") {
if (targetObj[k] == true)
targetObj[k] = {};
loopInto(targetObj[k], obj[k]);
}
}
}
for (i=0; i<data.length; i++) {
for (var k in data[i]) {
if (!(k in allColumns)) {
allColumns[k] = true;
}
if (typeof data[i][k] == "object") {
if (allColumns[k] == true)
allColumns[k] = {};
loopInto(allColumns[k], data[i][k]);
}
}
}
console.log( allColumns );
如您所见,我可以通过引用传递allColumns[k] 对象,然后通过loopInto 函数更改其值。但是为什么我不能对例如做同样的事情? window.allColumns 变量?如果您尝试将allColumns 替换为window.allColumns,则会失败。
【问题讨论】:
标签: javascript oop scope