2014-09-11 2 views
12

CoffeeScript имеет такой синтаксис сахар:Вопросительный знак синтаксис из CoffeeScript без CoffeeScript

item.getFoo?().fooParam?.bar 

который переводит в длинный JavaScript эквивалентного с getFoo==null и fooParam==null проверками. Вопрос в следующем: есть ли способы использовать этот синтаксис в javascript vanilla с библиотекой/переводчиком/компилятором, отличным от CoffeeScript? Мы используем Traceur в нашем проекте, но у него нет такого синтаксиса, потому что он не соответствует требованиям ES6 (хотя я этого и желаю). Может быть, каким-то образом реализовать его в вилке Traceur?

+0

вы пытались раскошелиться его? где проблемы? –

+0

Мне кажется, что слишком сложно для меня изучить внутренние работы Traceur для реализации этой маленькой функции. – artch

+0

Да, я посмотрел на него, и это кажется очень сложным. Вы выполняете скомпилированный javascript на клиенте или отправляете компилятор клиенту? (у вас есть '

1

В последнее время у меня был такой же вопрос, и я пришел сюда, надеясь на лучшее решение, чем мой нынешний. Если вы делаете это часто, это легче сделать функцию, чтобы сделать это для вас:

var qm = function(arg) { 
    if (arg instanceof Object) return arg; 
    return function(){}; 
}; 

Затем, чтобы использовать его, вы обернуть свои объекты в нем, чтобы убедиться, не возникает никаких ошибок. Он начинает выглядеть некрасиво, если есть много д uestion м ковчеги на линии

qm(qm(item.getFoo)().fooParam).bar 
+0

Просто понял, что это полностью разрывается, когда контекст ('this') входит в игру. – willlma