JavaScript 请问下大家在写 coffee 的时候,有没有遇到过编译后的函数作用域混乱的情况?

liudongyue1987 · 2016年05月18日 · 最后由 liudongyue1987 回复于 2016年05月18日 · 2114 次阅读

环境: 系统:win7 编辑器:sublime text 3 coffee 版本:1.10.0

症状: 我有这么一句代码,在编辑器中是 这个样子,目测显示正常

self.ApiInterface = (data) ->
self.currSelectRole data.RoleSID()
self.GetApiInterfaces(data)
layer.open
    type: 1
    title: '选择接口(勾选即生效)'
    skin: 'layui-layer-rim'
    area: ['800px', '600px']
    content: $("#div_interface")

如果正常编译后的效果应该是这个样子

self.ApiInterface = function(data) {
  self.currSelectRole(data.RoleSID());
  self.GetApiInterfaces(data);
  layer.open( {
    type: 1,
    title: '选择接口(勾选即生效)',
    skin: 'layui-layer-rim',
    area: ['800px', '600px'],
    content: $("#div_interface")
  });
};

但是,实际上 我把编辑器中显示正常的代码 copy 出来贴到论坛发帖窗口时,成了这样 (在不该出现空格的地方出现了空格,下面 layer.open 方法应该整体前移两个空格的)

self.ApiInterface = (data) ->
self.currSelectRole data.RoleSID()
self.GetApiInterfaces(data)
    layer.open
        type: 1
        title: '选择接口(勾选即生效)'
        skin: 'layui-layer-rim'
        area: ['800px', '600px']
        content: $("#div_interface")    

这个错位的代码编译后就会成为这样:

self.ApiInterface = function(data) {
  self.currSelectRole(data.RoleSID());
  return self.GetApiInterfaces(data);
};
layer.open({
  type: 1,
  title: '选择接口(勾选即生效)',
  skin: 'layui-layer-rim',
  area: ['800px', '600px'],
  content: $("#div_interface")
});

这下就恶心了。我不晓得这多出来的空格是如何生成的,我遇到很多次. 最后不得不手动删除。

不知大家有没有遇到过相同的问题,有没有好的方式避免? 感谢!

编辑器设置,用空格替换 Tab。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号