function foo() {}
var bar = foo <| function() {};
Это первый раз, когда я увидел что-то подобное. Что означает <|
?
Источник: https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp1.js
function foo() {}
var bar = foo <| function() {};
Это первый раз, когда я увидел что-то подобное. Что означает <|
?
Источник: https://github.com/allenwb/ESnext-experiments/blob/master/ST80collections-exp1.js
Теперь, когда вы разместили ссылку на источник, вы можете увидеть в комментариях в верхней части файла именно то, что он делает (строка 36):
the < | оператор - определяет [[Прототип]] литерала...
Для этих примеров < | | используемый с выражением функции, устанавливает [[Prototype]] объекта, созданного как значение функции "prototype" для свойства свойства "prototype"объект LHS. Это в дополнение к установке [[Prototype]] сам объект функции. Другими словами, он создает множество [[Прототип]] как функции, так и функции. потенциально разные значения.
Обновление: Я только что вспомнил этот вопрос, когда я встретил предложение полного предложения ECMAScript Harmony для этого "литерального [[Prototype]] оператора" . Там гораздо больше информации, чем в приведенной выше цитате, поэтому стоит прочитать.
Похоже, что это должно быть
function foo() {}
var bar = foo || function() {};
который присваивает foo бару, если foo определен и назначает пустую функцию в противном случае.
О ссылке, которую вы отправили позже, она по-прежнему недействительна 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
Это вызывает синтаксическую ошибку для меня ( "неожиданный токен" на "|" )