Coffeescript 需要使用Visual Studio 2012中的插件设置咖啡脚本格式的帮助吗
生成以下JavaScript的确切CofeeScript是什么:Coffeescript 需要使用Visual Studio 2012中的插件设置咖啡脚本格式的帮助吗,coffeescript,Coffeescript,生成以下JavaScript的确切CofeeScript是什么: var AddArtist= function() { var addDiv, artistVal; addDiv = $("#artistname"); artistVal = $("#artistinput").val(); $(" <div id=\"artistname2\"><label>" + artistVal + "</label>
var AddArtist= function() {
var addDiv, artistVal;
addDiv = $("#artistname");
artistVal = $("#artistinput").val();
$(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo(addDiv);
return false;
};
我试着用它来转换成咖啡
产生:
AddArtist = ->
addDiv = undefined
artistVal = undefined
addDiv = $("#artistname")
artistVal = $("#artistinput").val()
$(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo addDiv
false
当我将其粘贴到使用CofeeScript插件的Visual Studio中时,输出为:
(function() {
var AddArtist;
AddArtist = function() {
var addDiv, artistVal;
addDiv = $("#artistname");
artistVal = $("#artistinput").val();
$(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo(addDiv);
return false;
};
}).call(this);
因此,CoffeeScript插件将脚本包装到另一个函数中,因此AddArtister变量永远不会离开内部函数的范围
这会导致在我的网页上出现未捕获的引用错误AddArtister
现在的问题是使用Visual Studio插件,到底是什么样的Cofe脚本生成了下面的JavaScript
var AddArtist= function() {
var addDiv, artistVal;
addDiv = $("#artistname");
artistVal = $("#artistinput").val();
$(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo(addDiv);
return false;
};
CoffeeScript将生成的JavaScript封装在函数包装器中,以防止出现以下情况: -b、 -裸露 在不使用顶级函数安全包装器的情况下编译JavaScript 如果希望AddArtist位于全局范围内,则必须明确地将其放在其中:
@AddArtist = ->
addDiv = $("#artistname")
artistVal = $("#artistinput").val()
$("<div id='artistname2'><label>#{artistVal}</label></div>").appendTo addDiv
false
如果您只担心浏览器环境。我还清理了js2coffee对您的代码所做的其他一些事情
js2coffee还有其他一些bug,所以我建议您要么将工作JavaScript作为JavaScript,要么学习CoffeeScript并手动进行转换。CoffeeScript最终还是JavaScript,因此无需转换工作代码。如果您手动进行转换,您最终会更好地理解CoffeeScript,并且在翻译意图和功能而不仅仅是标记时,您将拥有更多惯用的CoffeeScript代码
window.AddArtist = -> ...