【问题标题】:What does <| in this code mean?<| 是什么意思?在这段代码中是什么意思?
【发布时间】:2011-08-26 17:49:22
【问题描述】:
function foo() {}
var bar = foo <| function() {};

这是我第一次看到这样的事情。 &lt;| 是什么意思?

来源:https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp1.js

【问题讨论】:

  • 这不是有效的 javascript 语法,会导致错误。应该是var bar = foo || function() {};
  • 那要么是无效的语法,要么是晦涩的语言扩展。
  • @David - 请提供链接,以便我们了解上下文。
  • @Ben Lee - 我们知道你会抱怨,所以我们先发制人地对 0 票投了反对票。
  • @David - 我知道这是一个语言扩展!谁会犯这么奇怪的错误。

标签: javascript syntax operators


【解决方案1】:

现在您已经发布了源链接,您可以在文件顶部的 cmets 中看到它的确切作用 (line 36):

对于这些示例

更新:当我遇到full ECMAScript Harmony proposal for this "literal [[Prototype]] operator" 时,我才想起这个问题。里面的信息比上面引用的要多得多,所以值得一读。

【讨论】:

  • 抱歉,我只是浏览了一下,没看到。谢谢
  • 为了清晰和完整,这是针对 es.next 的(经过一些谷歌搜索后)ECMAScript(不管是什么)
  • @Joseph - 我很惊讶有 JavaScript 经验的人不知道 ECMAScript。
  • 很高兴看到有人真的为这个问题做了一些研究。我对错误答案的数量感到震惊......更糟糕的是,他们有赞成票。
  • @Rick - 公平地说,直到已经发布了一些答案,OP 才编辑问题以包含链接。虽然也许他们可以检查一下是否稍后发布链接,因为有几个人要一个。
【解决方案2】:

应该是这样的

function foo() {}
var bar = foo || function() {};

如果 foo 已定义,则将 foo 分配给 bar,否则将空函数分配给 bar。

关于您稍后发布的链接,它仍然不是有效的Javascript。项目的 README 解释了文件的用途。

该项目包含各种语言扩展的示例文件 正在考虑纳入下一版的 ECMA 语言规范。示例的目的是测试 建议功能的实用性、可写性和可读性。有 不保证这些中的任何一个实际上将被纳入 语言。

建议功能的描述将您粘贴到问题中的代码行括起来。

the <| operator -- defines the [[Prototype]] of a literal

/* Quote that James posted */

function foo() {};
const bar = foo <| function() {};

Object.getPrototypeOf(bar)===foo; //true
Object.getPrototypeOf(bar.prototype)===foo.prototype;  //true

【讨论】:

    【解决方案3】:

    这对我来说会引发语法错误(“|”上的“意外标记”)

    For A complete list of javascript operators go here

    【讨论】:

    • @Rikudo Sennin ...我知道有...标题更大。
    • 作为一个支持 Web 开发的社区。这是一个不好的例子。此外,它实际上没有必要变得更大。 :-)
    • 您应该在发布不正确的答案之前进行研究。 &lt;| 是提议操作符,用于在 ES.next 中分配原型。
    • @Rick dude... 这就像一周前一样,我的回答中的所有内容都是正确的。我的回答没有错。在此时javascript(发帖人将此问题标记为)中没有current &lt;| 运算符。我所做的只是说它“引发了语法错误”,并提供了一个指向列出所有当前 javascript 运算符的文档的链接。在投票之前,您真的应该阅读整个问题整个答案(即“做研究”)。 :P
    • @Rick 事情是它不正确。我陈述了一个确凿的事实,即它“为我抛出了一个语法错误”。我还提供了一个有用的链接,如果我不包含链接,我会删除我的答案(就像我过去一样)。我不明白的是为什么你决定在一个你甚至没有参与的线程中进行投票。是的,根据您的陈述“我对错误答案的数量感到震惊”(强调添加),我确实认为这是个人的。我认为您对所给出的大多数答案确实存在个人问题,无论它们是否对将来的某人有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多