Javascript 使用存储的函数打印变量会生成[function],这意味着什么?

Javascript 使用存储的函数打印变量会生成[function],这意味着什么?,javascript,Javascript,我目前正在阅读JavaScript的最终版本,以巩固我的知识和一些我不太明白的东西 我举了下面的例子 //An array of functions returning names. var nameArray = [] nameArray[0] = function (){return "Bob in nameArray "} console.log(nameArray[0]) // This will output "[Function]" console.log(nameArray[

我目前正在阅读JavaScript的最终版本,以巩固我的知识和一些我不太明白的东西

我举了下面的例子

//An array of functions returning names.
var nameArray = []
nameArray[0] = function (){return "Bob in nameArray "}
console.log(nameArray[0])   // This will output "[Function]"

console.log(nameArray[0]()) // This will output "Bob in nameArray " as intended

为什么当我记录
nameArray[0]
时会得到
[Function]
。我知道存储的元素是一个函数,但是
[函数]
代表什么

它是存储的元素的类型吗?它是实际的函数对象本身吗?如果是这样的话,这是调用函数时创建的同一个函数对象吗(它存储其局部变量和外部范围)

为什么我能做到以下几点:

// Create object
var nameObject = {
    name:"bob"
}
nameArray[1] = nameObject
console.log(nameArray[1]) // This will print the literal object
这将只打印对象

我想我的问题是:
[Function]
实际上代表了什么。如果它是一个对象,那么考虑到函数是一个对象,为什么该对象没有像上面的nameObject示例那样打印出来呢


谢谢。

控制台记录函数时,函数输出的内容取决于引擎。在本例中,它只是告诉您它是一个函数。在chrome中,它将打印出函数并指示它是一个函数


之所以可以打印函数,是因为函数是JS中的第一类实体。本质上,您可以将它们传递给其他函数,将它们分配给变量,并像处理任何其他对象一样使用它们。

这只是您的控制台向您展示某种功能的方式。它不是将其作为对象打印,因为这样做通常是无用的——您可以向函数添加属性,但大多数情况下,您不会这样做。所以,没有必要给你“内容”,因为它是不相关的。