为什么 console.log 输出与 return 输出不同

why is console.log output different from a return output

我是 JavaScript 的新手,很抱歉提出这个业余问题,但我觉得通过回答可以帮助我更好地理解在线课程中的课程 material 和作业.这里是。当我这样写 console.log 时:

var getKeys = function(objOne){
  for(var property in objOne){
    console.log(property);
  }
};

控制台returns: "name" "age"

...但是如果我将 console.log 更改为 "return",就像这样:

var getKeys = function(objOne){
  for(var property in objOne){
    return property;
  }
};

输出returns: "name"

为什么 returns 不同?

因为return退出函数。您在第一个 属性 退出函数,因此只有一个。

MDN return

The return statement ends function execution and specifies a value to be returned to the function caller.

根据 spec,(强调我的)

A return statement causes a function to cease execution and return a value to the caller.

因此您的 for...in 循环将永远不会到达第 2 次迭代。

console.logreturn是完全不同的东西。

第一种情况,你看

"name"
"age"
> undefined 

因为您告诉控制台显式记录键,但是第二种情况,使用 return 关键字,您告诉函数终止并且 return 值 "name",这就是为什么你只看到

> "name"

console.log() 将把你传入的参数打印到控制台,其中 return 停止执行你的函数,returns 无论你告诉它什么。

一旦函数遇到return语句,它将停止执行;所以在第一个例子中,它循环遍历了两者。在第二个中,它点击 return 语句并说 "Ok, I'm done."