Node.js函数在方括号中的语法[function]或[function:isBuffer]

时间:2015-08-21 10:38:42

标签: javascript json node.js

如果这是一个noob问题,我很抱歉。但是我一直在检查global中的node.js var并且被语法弄得一团糟。 它显然是一个JSON对象,但它看起来像:

reallyExit: [Function: reallyExit],
binding: [Function: binding],
exit: [Function]

因此,我的具体问题是:  1.如果他们有一个功能对象,为什么要把它放在方括号中?  2.为什么他们把一个键值对放在括号中? [Function: reallyExit]  3.关键定义的差异是什么:[Function: reallyExit][Function]

2 个答案:

答案 0 :(得分:5)

  

它显然是一个JSON对象

不,不是。 Acceptable types in JSON 包含函数。由于这些变量是函数,所以您看到的是函数的toString,而不是对象。

  

为什么他们将键值对放在括号中?

如果您在节点命令行中使用df1 <- structure(list(Date = structure(c(16445, 16446, 16451, 16455), class = "Date"), Obs = c(2L, 3L, 1L, 4L)), .Names = c("Date", "Obs"), row.names = c(NA, -4L), class = "data.frame") df2 <- structure(list(Date = structure(c(16444, 16445, 16446, 16447, 16448, 16449, 16450, 16451, 16452, 16453, 16454, 16455, 16456 ), class = "Date"), cumSum = c(0L, 2L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 10L, 10L)), .Names = c("Date", "cumSum"), row.names = c(NA, -13L), class = "data.frame") ,那么您可能会看到util.inspect的输出,而不是正常console.log。而不是正常toStringtoString给出“......对象的字符串表示,这对调试很有用。”

换句话说,节点util.inspect将使用括号作为表示各种对象,函数,数组等的简洁方法。

  

关键定义的区别是什么:[功能:reallyExit]与[功能]

差异是前者是function declaration,后者是function expression。例如:

console.log

答案 1 :(得分:1)

这是Javascript对象在处理toString时所采用的格式。 [Function: something]不是键值对。在这里,我认为你得到了对象的原型(Function)和它的声明名称(当它最初不是匿名函数时)。

Javascript对象不是JSON-s。 JSON是用于交换数据的表示法。它源自Javascript,但现在是一种独立的格式。