Вызов функций coffeescript с консоли
Играя немного с coffeescript и Rails 3.1.0.rc4. Введите этот код:
yourMom = (location) ->
console.log location
yourMom "wuz hur"
Когда страница загружается, это выводит "wuz hur" правильно. Но когда я пытаюсь позвонить
yourMom("wuz hur")
из консоли chrome js (как иногда бывает, чтобы проверить обычные функции JS), я получаю "ReferenceError: yourMom не определен"
Доступны ли функции, генерируемые coffeescript таким образом?
Ответы
Ответ 1
проще использовать общие методы/переменные, чтобы использовать @, что означает это.
@yourMom = (location) ->
console.log location
yourMom "wuz hur"
Более чистый синтаксис и его легко читать, но я не рекомендую создавать глобальные методы/переменные
Ответ 2
Это происходит потому, что coffeescript завершает все в закрытии. Вывод JavaScript этого кода на самом деле:
(function() {
var yourMom;
yourMom = function(location) {
return console.log(location);
};
yourMom("wuz hur");
}).call(this);
Если вы хотите экспортировать его в глобальную область, вы можете:
window.yourMom = yourMom = (location) ->
console.log location
или
this.yourMom = yourMom = (location) ->
console.log location
Ответ 3
Я не уверен в Rails, но у компилятора CoffeeScript есть опция (--bare) для компиляции без оболочки функций. Отлично подходит для воспроизведения, но он загрязняет глобальную область.
Ответ 4
эта ссылка может решить вашу проблему
Rails - вызов CoffeeScript из JavaScript
Оберните свои функции в уникальном пространстве имен, а затем вы сможете использовать эти функции из wnywhere