【问题标题】:Why typeof + is not "function" javascript为什么 typeof + 不是“函数”javascript
【发布时间】:2014-01-23 15:49:28
【问题描述】:

如题,为什么

typeof +

不给“功能”?

【问题讨论】:

  • ... 因为+ 是运算符?
  • 为什么它应该是函数?
  • 什么是 JavaScript? JavaScript 不是 C++ :)

标签: javascript function typeof


【解决方案1】:

+operator,它不是函数。 typeof + 因此是一个语法错误。

【讨论】:

  • 虽然这个答案是完美的,但它确实引出了另一个问题:如果+ 一个函数会不会很好...var total = list.reduce(+, 0)。或者更好,如果我们有自动柯里化/部分应用程序并且我们定义了reduce = function(fn, start, list),那么我们就可以做sum = reduce(+, 0)。不,那只是 crazy talk
  • 是的,在玩过haskell 和scheme 之后,由于javacript 被呈现给我,与它们有点相似,我希望它。显然我被误导了。
  • @user1544128,JavaScript 与 lisp 语言有很多共同点,但这不是其中之一。
  • @ScottSauyet,您可以轻松地创建一个 var sum = function(a, b) { return a + b; } 函数,并以与 + 相同的方式使用它。
  • @rid:是的,我明白了。我一直在开发 Ramda,这是一个用于 JS 的函数式编程库,为我提供了一些我想要的功能。所以我知道如果我愿意,我可以创造它们。而我的foldl/foldr/reduce 版本是自动柯里化的,我确实有一个add 函数,sum 是根据reduceadd 定义的。但是如果这是用语言代替的话,我的很大一部分会喜欢它......
【解决方案2】:

typeof 只返回对象类型 (pretty much everything in JS) 和原语。

请参阅MDN documentation 以获取typeof

正如 rid 所指出的,+ 是一个运算符,而不是一个对象或原语。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2011-04-16
    • 2013-07-03
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多