在Javascript中,为什么结果低于undefined
?
var x = "happy";
var result = x.split('').forEach(function(val,index,array){
array[index] = "0";
});
console.log(result);
输出结果为:
undefined
答案 0 :(得分:1)
因为forEach
正在编辑数组。它不返回数组。您的代码适用于此修改:
var x = "happy";
var result = x.split('');
result.forEach(function(val,index,array){
array[index] = "0";
});
console.log(result);
forEach()为每个数组元素执行一次回调函数; 与map()或reduce()不同,它总是返回undefined值而且是 不可链接。典型的用例是执行副作用 链的末端。 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description
答案 1 :(得分:1)
string.split('').forEach(...)
可以完美地迭代字符串的字符。
但是forEach
不返回值,因此result === undefined
。
答案 2 :(得分:1)
如上所述,每次都不会返回值。
您可以使用map()
var x = "happy";
var result = x.split('').map(function(val,index,array){
return "0";
});
console.log(result);
答案 3 :(得分:0)
这是因为forEach遍历数组。它没有返回任何东西。
试试这个:
var x = "happy";
var result = [];
x.split('').forEach(function(val,index,array){
result.push("0");
});
console.log(result);
使用下划线你可以用两行来写它:
var x = "happy";
var result = _.map(x.split(''), function(el){ return "0"; });