JavaScript unshift 参数返回意外结果
javascript unshift arguments returns unexpected results
router.route = function (alias, pattern, action, constraints) {
if (2 === arguments.length)
Array.prototype.unshift.call(arguments, undefined)
console.log(arguments)
}
router.route('/artist/:id', function () {})
{ '0': undefined,
'1': '/artist/:id',
'2': [Function],
'3': undefined,
'4': undefined,
'5': undefined,
'6': undefined,
'7': undefined,
'8': undefined,
'9': undefined,
'10': undefined,
'11': undefined,
'12': undefined,
'13': undefined,
'14': undefined,
'15': undefined,
'16': undefined,
'17': undefined,
'18': undefined,
'19': undefined }
我基本上要做的是使"别名"参数可选但我试图找到一种方法来做到这一点而不这样做。
if (2 === arguments.length) {
action = pattern
pattern = alias
alias = undefined
}
所以 unshift() 基本上可以工作,我得到相同的结果。 alias = undefined
pattern = '/artist/:id'
action = function () {}
但问题是,我突然在参数数组的末尾添加了 17 个"未定义"。
这会影响性能吗,有人知道为什么会这样吗?
编辑
我不小心在我的原始问题中写了 Array.prototype.unshift(参数,未定义)而不是 Array.prototype.unshift.call(参数,未定义),非常抱歉。
如果由于资源超时而存在这些未定义的位置,那么是的,性能将受到影响。 如果它只是一个空的数组索引,那么 否 它不会影响性能。
如果我理解正确,你不是只想删除数组的第一个元素吗?
如果是这样,您可以执行以下操作:
var args = Array.prototype.shift.call(arguments);
相关文章:
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- Javascript:函数返回意外结果
- 意外结果,在 ASP.Net 中解析 JSON 对象的数组
- 按位或意外结果
- 来自 JavaScript 循环的意外结果
- 从 JavaScript 中的图像中读取像素数据会返回半透明像素的意外结果
- 在 JS 中短路空数组会产生意外结果:“[] ||真 == []'
- NodeJS中的Parse Json文件在Node中显示意外结果
- 基于给出意外结果的提示输入的逻辑
- JavaScript Regexp.test返回意外结果
- 键控产生意外结果.HTML5游戏
- Javascript do/while循环显示意外结果
- 来自 CSS 和 jQuery 的意外结果
- MongoDB mapReduce方法意外结果
- 具有意外结果的 Javascript 函数参数
- 在 JavaScript 中解析日期字符串的意外结果
- 从内部HTML更改为表单时获得意外结果,输入类型文本字段
- 在计算链逻辑表达式 JavaScript 时出现意外结果
- 意外结果 - 谷歌自动完成针对约克郡
- JavaScript unshift 参数返回意外结果