来自Mozilla开发者网络:
[1,4,9].map(Math.sqrt)
Run Code Online (Sandbox Code Playgroud)
会产生:
[1,2,3]
Run Code Online (Sandbox Code Playgroud)
为什么这样做:
['1','2','3'].map(parseInt)
Run Code Online (Sandbox Code Playgroud)
屈服于此:
[1, NaN, NaN]
Run Code Online (Sandbox Code Playgroud)
我已经在Firefox 3.0.1和Chrome 0.3中进行了测试,只是作为免责声明,我知道这不是跨浏览器功能(没有IE).
我发现以下内容将达到预期的效果.但是,它仍然没有解释错误的行为parseInt.
['1','2','3'].map(function(i){return +i;}) // returns [1,2,3]
Run Code Online (Sandbox Code Playgroud) var timeSplit = timeCaption.innerText.trim().split(' ');
Run Code Online (Sandbox Code Playgroud)
将产生一个数组 ["10:00", "–", "18:00"]
var startStr = timeSplit[0].split(':');
Run Code Online (Sandbox Code Playgroud)
将产生一个数组 ["10", "00"]
var res = startStr.map(parseInt);
Run Code Online (Sandbox Code Playgroud)
将产生一个数组 [10, NaN]
然而
var res = startStr.map(function (x) {
return parseInt(x);
});
Run Code Online (Sandbox Code Playgroud)
工作正常,将产生"预期"数组 [10, 0]
我希望每个字符串都传递给parseInt它返回正确的整数值(并且单独执行该操作也会产生正确的结果,就像工作代码一样).
我在这里错过了什么?
编辑:我自己投票决定关闭这个问题.很明显的错误.大家好!