Javascript 使用存储的函数打印变量会生成[function],这意味着什么?
我目前正在阅读JavaScript的最终版本,以巩固我的知识和一些我不太明白的东西 我举了下面的例子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[
//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中的第一类实体。本质上,您可以将它们传递给其他函数,将它们分配给变量,并像处理任何其他对象一样使用它们。这只是您的控制台向您展示某种功能的方式。它不是将其作为对象打印,因为这样做通常是无用的——您可以向函数添加属性,但大多数情况下,您不会这样做。所以,没有必要给你“内容”,因为它是不相关的。