簡體   English   中英

從控制台調用coffeescript函數

[英]Calling coffeescript functions from console

用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生成的函數是否以這種方式提供?

共享全局方法/變量的更簡單方法是使用@表示這意味着。

@yourMom = (location) ->
  console.log location

yourMom "wuz hur"

更好的語法和更容易閱讀,但我不鼓勵您創建全局方法/變量

發生這種情況是因為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

我不確定Rails但是CoffeeScript編譯器有一個選項(--bare)可以在沒有函數包裝器的情況下進行編譯。 很好玩,但它確實污染了全球范圍。

這個鏈接可以解決你的問題Rails - 從JavaScript調用CoffeeScript將你的函數包裝在一個獨特的命名空間中然后你可以從wnywhere訪問這些函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM