function foo() {}
var bar = foo <| function() {};
这是我第一次见到这样的东西。 <|
是什么意思?
来源:https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp1.js
答案 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)
这会为我抛出语法错误(“|”上的“意外令牌”)