我正在使用 NodeJS 0.10.13。我只是对以下代码片段的行为感到好奇:
> var a = ['1','2','3']
undefined
> a.map(function(){return path.resolve(arguments[0])})
[ '/Users/user/1',
'/Users/user/2',
'/Users/user/3' ]
> a.map(path.resolve)
TypeError: Arguments to path.resolve must be strings
at exports.resolve (path.js:313:15)
> a.map(path.resolve.bind(path)))
TypeError: Arguments to path.resolve must be strings
at exports.resolve (path.js:313:15)
当数组只有字符串时,为什么第 2 次和第 3 次map
调用会返回错误?转到 NodeJS 源代码中的相关行会产生以下结果:
if (typeof path !== 'string') {
throw new TypeError('Arguments to path.resolve must be strings');
} else if (!path) {
continue;
}
这对于为什么参数不是字符串没有意义。有没有人有任何线索?