为什么console.log函数返回undefined?

时间:2017-10-21 13:42:45

标签: javascript arrays function



function stringifyObj(parmObj){
    s="";
    Object.getOwnPropertyNames(parmObj).forEach
    (
        function (val, idx, array) {
          s+=val + ' -> ' + parmObj[val]+"\n";
        }
    )
    return s;
}

var arrayOfObjects = [
    { name: 'Edward', value: 21 },
    { name: 'Sharpe', value: 37 }
  ];

console.log(
    arrayOfObjects.forEach(function(parmArrItem)
        {
            const p=stringifyObj(parmArrItem);
            console.log(p); 
        }
));




在下面的代码中,2个对象显示正常,但之后我在运行结束时显示undefinedundefined来自哪里?感谢。

1 个答案:

答案 0 :(得分:7)

arrayOfObjects.forEach returns nothing.

So, when you use console.log() for a void function that's you received undefined.

forEach方法导致只为数组中的每个项执行回调提供的函数。

换句话说,console打印评估 表达式的结果。

console.log()未定义,因为您的函数或表达式没有显式返回。

function stringifyObj(parmObj){
    s="";
    Object.getOwnPropertyNames(parmObj).forEach
    (
        function (val, idx, array) {
          s+=val + ' -> ' + parmObj[val]+"\n";
        }
    )
    return s;
}

var arrayOfObjects = [
    { name: 'Edward', value: 21 },
    { name: 'Sharpe', value: 37 }
  ];


arrayOfObjects.forEach(function(parmArrItem)
        {
            const p=stringifyObj(parmArrItem);
            console.log(p); 
        }
);