Что делает <| в этом коде имеется ввиду? - PullRequest
28 голосов
/ 26 августа 2011
function foo() {}
var bar = foo <| function() {};

Впервые я увидел нечто подобное.Что означает <|

Источник: https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp1.js

Ответы [ 3 ]

34 голосов
/ 26 августа 2011

Теперь, когда вы разместили ссылку на источник, вы можете увидеть в комментариях вверху файла именно то, что он делает ( строка 36 ):

<| оператор - определяет [[Prototype]] литерала ... </p>

Для этих примеров <| используется с выражением функции устанавливает [[Prototype]] объекта, созданного как значение функции свойство "prototype" к значению свойства "prototype" объект LHS. Это в дополнение к настройке [[Prototype]] из сам объект функции. Другими словами, он строит наборы [[Prototype]] как для функции, так и для function.prototype для потенциально разные значения. </p>

Обновление: Я только что вспомнил этот вопрос, когда натолкнулся на полное предложение ECMAScript Harmony для этого "буквального [[Prototype]] оператора" . Там гораздо больше информации, чем в приведенной выше цитате, поэтому ее стоит прочитать.

7 голосов
/ 26 августа 2011

Похоже, что это должно быть

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

, которое назначит foo для bar, если foo определен, и в противном случае назначит пустую функцию для bar., это все еще не действует Javascript.README проекта объясняет назначение файла.

Этот проект содержит примеры файлов различных языковых расширений, которые рассматриваются для включения в следующие выпуски Спецификации языка ECMA.Цель примеров - проверить полезность, доступность для записи и читаемость предложенных функций.Нет никакой гарантии, что что-либо из этого будет фактически включено в язык.

Описание предлагаемой функциональности заключает в скобки строки кода, которые вы вставили в свой вопрос.

0 голосов
/ 26 августа 2011

Это приводит к синтаксической ошибке для меня («неожиданный токен» на «|»)

Полный список операторов JavaScript можно найти здесь

...