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

NoC*_*nce 2 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); 
        }
));
Run Code Online (Sandbox Code Playgroud)

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

Mih*_*nut 7

arrayOfObjects.forEach 没有回报.

因此,当您使用console.log()void函数时,您收到的是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); 
        }
);
Run Code Online (Sandbox Code Playgroud)