亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在CoffeeScript中定義全局變量?

如何在CoffeeScript中定義全局變量?

DIEA 2019-06-24 15:29:38
如何在CoffeeScript中定義全局變量?在Coffeescript.org上:bawbag = (x, y) ->     z = (x * y)bawbag(5, 10)將匯編成:var bawbag;bawbag = function(x, y) {   var z;   return (z = (x * y));};bawbag(5, 10);通過node.js下的咖啡腳本進行編譯可以這樣包裝:(function() {   var bawbag;   bawbag = function(x, y) {     var z;     return (z = (x * y));   };   bawbag(5, 10);}).call(this);醫生說:如果您想要為其他腳本創建頂層變量,請將它們作為屬性附加到窗口或CommonJS中的導出對象上。如果您同時針對CommonJS和瀏覽器:root=exports,存在運算符(下面將介紹)提供了一種可靠的方法來確定將它們添加到何處?這,這個如何在CoffeeScript中定義全局變量?!霸诖翱谏细郊訉傩浴币馕吨裁??
查看完整描述

3 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

在我看來,“原子”似乎有最簡單的答案,但我認為它可以簡化一些。你得把@在您想要成為全局的任何東西之前,這樣它就會編譯成this.anythingthis引用全局對象。

所以.。

@bawbag = (x, y) ->
    z = (x * y)bawbag(5, 10)

編譯成.。

this.bawbag = function(x, y) {
  var z;
  return z = x * y;};bawbag(5, 10);

并在node.js提供的包裝器內部和外部工作。

(function() {
    this.bawbag = function(x, y) {
      var z;
      return z = x * y;
    };
    console.log(bawbag(5,13)) // works here}).call(this);console.log(bawbag(5,11)) // works here


查看完整回答
反對 回復 2019-06-24
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

Ivo說得不錯,但我要提到的是,您可以使用一個骯臟的技巧,不過如果您要使用樣式點,我不建議使用它:您可以通過用Backticks轉義CoffeeScript將JavaScript代碼直接嵌入到CoffeeScript中。

但是,這通常是一個不好的主意:CoffeeScript編譯器不知道這些變量,這意味著它們將不遵守普通的CoffeeScript作用域規則。所以,

`foo = 'bar'`foo = 'something else'

編譯成

foo = 'bar';var foo = 'something else';

現在你有了兩個foo在不同的范圍內。沒有辦法修改全球 foo來自CoffeeScript代碼,而不引用全局對象,正如Ivy所描述的。

當然,這只是一個問題,如果你做了一個任務foo在CoffeeScript中-如果foo在給出它的初始值(即它是一個全局常量)之后,它變成了只讀的,那么嵌入式JavaScript解決方案可能是可以接受的(盡管仍然不推薦)。


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 552 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號