函数正在重写变量.这怎么可能
Function is rewriting variable. How is this possible?
这个函数似乎正在重写'pages'变量的值,我对此束手无策。
我尝试过通过函数返回变量,将变量硬编码到函数中,以及其他一些事情,但这似乎应该有效。
有什么想法吗
编辑:
的输出应该是一个对象数组,其格式类似于{default: "Tax Return", safe: "taxreturn"}
。当第一次使用getPages('Both', 'overview', null)
和getPages('Both', null, 'overview')
调用该函数时,它会执行此操作,但如果您多次调用它,它将出错,您会发现"pages"变量现在是一个对象数组。
var pages = [
"Dashboard",
"Overview",
"Contacts",
"Records",
"Cash Flow",
"Transactions",
"Income",
"Expenses",
"Tax Return"
];
var getPages = function(format, includeOne, excludeOne)
{
var pageStrings = pages;
if(includeOne)
for(var p = 0; p < pageStrings.length; p++)
if(uriSafe(pageStrings[p]) == uriSafe(includeOne))
pageStrings = [pageStrings[p]];
if(excludeOne)
for(var c = 0; c < pageStrings.length; c++)
if(uriSafe(pageStrings[c]) == uriSafe(excludeOne))
pageStrings.splice(c, 1);
var outputArray = [];
switch(format)
{
case 'UriSafe':
for(var i = 0; i < pageStrings.length; i++)
pageStrings[i] = uriSafe(pageStrings[i]);
break;
case 'Both':
for(var x = 0; x < pageStrings.length; x++)
{
pageStrings[x] = {
default: pageStrings[x],
safe: uriSafe(pageStrings[x])
};
}
break;
default:
}
function uriSafe(str)
{
return str.replace(' ', '').toLowerCase();
}
console.log(pageStrings);
return pageStrings;
}
var pageStrings = pages;
正在创建对同一数组对象的引用。当您通过pageString
访问它时,您会更改pages
所引用的同一对象。要创建它的副本(然后您可以在不更改pages
的情况下从中拼接、分配属性等),请使用
var pageStrings = pages.slice();
我认为您的困惑是围绕以下行
var pageStrings = pages;
这不会创建pages
的副本,它只是创建对pages
的引用。这意味着您对pageStrings
的值所做的任何编辑(清除、更改元素等)都将显示在pages
上,因为它们引用了相同的变量。
如果您希望pageStrings
拥有pages
阵列的副本,请执行以下
var pageStrings = pages.slice(0);
var pageStrings = pages;
是您的难题。请记住,当您以这种方式使用=
时,如果右侧的参数是和数组、对象或函数,则新的var将是一个引用。使用字符串和数字,您将获得您所期望的副本。
相关文章:
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- (false==false==true)怎么可能是真的
- 不在443上运行https怎么可能呢
- 这个Javascript变量怎么可能有价值
- Extjs 4.2.1隐藏字段-inputEl.dom怎么可能未定义
- 桌面 HTML + CSS + JS 应用程序?这怎么可能
- “功能”就是功能,这怎么可能
- 开放层:怎么可能.功能覆盖在 3.13v 中替换
- JS:字符串真的是基元类型吗?如果是这样,这怎么可能
- 尝试通过php include放置png图像..这怎么可能
- 我怎么可能完成这种Javascript突出显示技术
- 我传递给函数的变量在该函数中怎么可能是未定义的
- 在JavaScript中:如果Object是一个函数,那么如果一个函数是一个对象的实例,它怎么可能呢
- Javascript:一个带键的数组怎么可能呢
- 函数正在重写变量.这怎么可能
- 怎么可能object==这个,但是object.member!=this.member在Javascript中
- 一个有内容的iFrame怎么可能有一个未定义的contentDocument对象
- leaflet.js:setView()完成动画时引发的事件.这怎么可能
- 在chrome控制台的Html是不同的Html在浏览器..它怎么可能
- mongoDB中的文档怎么可能被映射但没有减少呢