我不小心偶然发现了以下实际上修改了全局命名空间的代码:我虽然这是不可能的?
以下代码将三个变量写入全局命名空间(尝试一下):
this.my_global1=1
@my_global2=2
f= -> @my_global3=3
f()
如果您现在在 cofeescript 尝试页面中将上述代码替换为
alert("#{[my_global1,my_global2,my_global3]}")
你会看到一个警报
1,2,3
这意味着上面的语句修改了全局上下文!
我花了好几个小时才弄清楚我的代码出了什么问题,因为我认为咖啡脚本可以保护我免受全球环境的意外变化!