如何在循环中创建新变量的同时修改函数参数
How to modify a function parameter at the same time new vars are created on a loop?
这是未尝试将var nn = 99
添加到循环的代码
//note that the 'i' is a parameter of the function
function myFunction(arr, i) {
for (i = i ? i + 5 : 1; i < arr.length; i++) {
//...
}
}
当我尝试添加一个新的var
时,它会做一些我不想要的事情:
编辑:这似乎是错误的
for (var nn = 99, i = i ? i + 5 : 1; i < arr.length; i++)
//created a new 'i'
或
for (i = i ? i + 5 : 1, var nn = 99; i < arr.length; i++)
//doesn't work :(
我知道如果我把它移到外面,它是完全一样的。但我最讨厌的一件事是,几个月后阅读旧代码时,无法理解我的意思。在循环中移动这条线会让我更容易理解这条线。
您不能修改函数的参数。由于i
是一个基元值(数字),JavaScript将通过值而不是引用进行调用。
当你将第二个参数命名为"i"时,它将从一开始就作为一个局部变量可用。在某个地方使用var关键字和"i"不会改变任何事情。
((i=i?i+5:1)*0)+99
这将永远等于99。但这并不重要,因为目前还不清楚你想要实现什么。
如果你的目标是从指定的起点循环通过一个数组,那么你可以这样做。
for (; i<arr.length; i++) {}
如果你不能保证我是一个数字,那么你就必须进行某种检查。
for (var index=(i?i:0); index < arr.length; index++) {}
Javascript将按值传递基元,因此您不能从该函数内部修改源值。如果需要,可以返回修改后的值。
ivar = func(arr, ivar);
function func(arr, i){
for (;i<arr.length; i++) {}
return i;
}
相关文章:
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- 将修改后的数组作为参数传递给函数
- 是否可以稍微修改我的对称差分函数,使其可以接受未知数量的参数
- 在iron router中使用查询参数修改模板
- 在Javascript中修改Razor参数
- 优雅地修改现有链接's参数
- 使用jQuery修改url参数而不刷新页面
- 修改req.url;t更新url参数(req.query)
- 在Javascript中修改循环函数的参数
- JavaScript 修改 URL 参数数组
- 在触发特定 POST 请求时修改 HTTP POST 请求正文(post 参数)
- 修改传入参数的对象以回调_each
- 从作为参数传入的数组中删除对象不会修改原始数组 (Angular)
- 加载json-url参数代码(javascript修改)
- 修改JSXGraph网格默认参数
- 如何在循环中创建新变量的同时修改函数参数
- 修改元素'事件函数的参数
- Jquery用于修改页面上的所有锚标记href,并从href属性中提取关键请求参数
- JavaScript (JQuery)修改参数名
- 修改参数UUID Fine Uploader Javascript上传库