什么< |在这段代码意味着什么

时间:2011-08-26 17:49:23

标签: javascript syntax operators

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

这是我第一次见到这样的东西。 <|是什么意思?

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

3 个答案:

答案 0 :(得分:34)

现在您已经发布了指向源代码的链接,您可以在文件顶部的注释中看到它的确切内容(line 36):

  

&lt; | operator - 定义文字的[[Prototype]] ......

     

对于这些示例&lt; |与函数表达式一起使用设置   作为函数值创建的对象的[[Prototype]]   “prototype”属性为“prototype”属性的值   LHS对象。这是设置[[原型]]的补充   功能对象本身。换句话说,它构建了   功能和function.prototype的[[Prototype]]   潜在的不同价值观。

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

答案 1 :(得分:7)

看起来应该是

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

如果定义了foo,则将foo指定给bar,否则将空函数指定为bar。

关于您之后发布的链接,它仍然无效Javascript。项目的自述文件解释了文件的用途。

  

此项目包含各种语言扩展的示例文件   正在考虑列入下一版的   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

答案 2 :(得分:0)

这会为我抛出语法错误(“|”上的“意外令牌”)

<强> For A complete list of javascript operators go here