Я не думаю, что вы можете сделать, если вы не хотите напишите foo
в JavaScript и вставьте его в свой CoffeeScript, используя обратные ссылки. Например:
console.log f 'x'
`function f(x) { return x }`
становится этот JavaScript:
console.log(f('x'));
function f(x) { return x };
и f
будет выполняться по желанию.
Если вы хотите изменить, как CoffeeScript интерпретирует foo(bar, baz) ->
, тогда вам придется отредактировать парсер и разобраться со всеми побочными эффектами и сломанным кодом. Результат будет похож на CoffeeScript, но это не будет CoffeeScript.
CoffeeScript и JavaScript - это разные языки, пытаясь написать CoffeeScript, в то время как вы думаете в терминах JavaScript, это просто испортит вещи; они разделяют много, и CoffeeScript скомпилирован/переведен на JavaScript, но они не являются одним и тем же языком, поэтому вы работаете с ними по-разному. Не пишите C-код на C++, не пишите Java в Scala, не пишите JavaScript в CoffeeScript, ...
Но это не приведет к определению функции в верхней части области действия 'function f() {...}' делает это 'foo ('x'); func ('foo') (x) -> console.log (x) 'даст вам TypeError, тогда как JavaScript' foo ('x'); функция foo (x) {console.log (x)} 'будет работать. –
Вы правы, он не поднимает функцию. – robkuz