Lee*_*lla 16 javascript coffeescript ruby-on-rails-3.1
用coffeescript和Rails 3.1.0.rc4玩一点.有这个代码:
yourMom = (location) ->
console.log location
yourMom "wuz hur"
Run Code Online (Sandbox Code Playgroud)
页面加载时,会正确输出"wuz hur".但是当我试着打电话的时候
yourMom("wuz hur")
Run Code Online (Sandbox Code Playgroud)
从chrome js控制台(我有时会测试普通的JS函数),我得到一个"ReferenceError:yourMom未定义"
coffeescript生成的函数是否以这种方式提供?
小智 37
共享全局方法/变量的更简单方法是使用@表示这意味着.
@yourMom = (location) ->
console.log location
yourMom "wuz hur"
Run Code Online (Sandbox Code Playgroud)
更好的语法和更容易阅读,但我不鼓励您创建全局方法/变量
Jam*_*ong 13
发生这种情况是因为coffeescript将所有内容包装在一个闭包中.该代码的JavaScript输出实际上是:
(function() {
var yourMom;
yourMom = function(location) {
return console.log(location);
};
yourMom("wuz hur");
}).call(this);
Run Code Online (Sandbox Code Playgroud)
如果要将其导出到全局范围,可以执行以下操作:
window.yourMom = yourMom = (location) ->
console.log location
Run Code Online (Sandbox Code Playgroud)
要么
this.yourMom = yourMom = (location) ->
console.log location
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10027 次 |
| 最近记录: |