【发布时间】:2023-04-08 03:09:02
【问题描述】:
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(arguments, undefined) 而不是 Array.prototype.unshift.call(arguments, undefined),非常抱歉。
【问题讨论】:
-
我会在 unshift 之前查看 console.log(参数)显示的内容。
-
这将在您将 unshift 应用于参数对象时发生。 [].unshift(arguments, 'string') 将导致相同的行为。
标签: javascript node.js