CoffeeScript 可以翻译成这段 JavaScript 吗?
Can CoffeeScript Be Translated into This Piece of JavaScript?
function abc() {
var a = 1;
var func = function() {
var a = 2;
}
func();
alert(a);
}
注意var
,在这段代码中,a
的结果将是1,但如果省略var
,结果将是2,但我发现Coffee无法翻译成这个。
例如:
abc = ->
a = 1
func = ->
a = 2
return
func()
alert(a)
return
来自 CoffeeScript 文档(着重号已添加(:
因为您不能直接访问 var 关键字,所以它是 不可能故意隐藏外部变量,只能参考 到它。
是否有理由需要影子a
并且不能只使用不同的标识符?
您可以使用反引号来执行普通的 js。
abc = ->
a = 1
func = ->
`var a = 2`
return
func()
alert(a)
return
编译形式
var abc;
abc = function() {
var a, func;
a = 1;
func = function() {
var a = 2;
};
func();
alert(a);
};
根据设计,CoffeeScript 不允许你隐藏以前声明的变量。然而,有一种情况仍然会发生:
abc = ->
a = 1
func = (a) ->
a = 2
return
func()
alert(a)
return
这将导致1
。由于a
是函数参数,因此它是函数范围的本地参数。
顺便说一句,你可以把它改写为
abc = ->
a = 1
do (a) -> a = 2
alert a
return
其中do (a) -> a = 2
等效于((a) -> a = 2)()
。
好吧,如果你这样做:
abc = ->
a = 1
func = ->
b = 2
alert(b)
return
func()
alert(a)
return
你会得到:
var abc;
abc = function() {
var a, func;
a = 1;
func = function() {
var b;
b = 2;
alert(b);
};
func();
alert(a);
};
因此,不要在第二个方法范围内使用相同的变量名,一切就绪。
下面的代码呢?
abc = ->
a = 1
func = ->
@a = 2
return
func()
alert(a)
return
我同意:这不是严格相同的代码,但行为符合预期......
您的问题只是文体组合还是您有"现实世界"问题?
相关文章:
- 如何在javascript上使用flak-babel进行翻译
- Django'支持Javascript文件中的翻译
- Javascript翻译模板
- 将旧的javascript翻译成jQuery的工具
- 将javascript翻译成angularjs
- 转换:使用 Javascript 翻译 Y
- 将javascript翻译成可读的形式
- 这是 Python 代码中这个循环的 JavaScript 翻译吗?
- 尝试将Javascript翻译成Java-帮助修复
- 将Javascript翻译成PHP
- 将JavaScript翻译成jQuery
- Jquery简单脚本只能在本地工作.为什么?像Javascript翻译
- django用django.po中的特定消息扩展了javascript翻译目录
- MVC-JavaScript翻译中字符串的全球化
- 用Javascript翻译页面
- 我如何把下面的javascript翻译成c#
- 如何通过用javascript翻译文本来制作一个多语言网站
- Django不需要的JavaScript翻译
- 实时JavaScript翻译眨眼
- Python 中的列表 => javascript 翻译