CoffeeScript函数括号

时间:2013-11-02 19:27:04

标签: coffeescript

我正在学习CoffeeScript,而我正在尝试做一些我通常会在简单的JavaScript中做的事情。

这是我试图做的事情:

initializeWebGL = (canvas) ->
    gl = canvas.getContext "webgl" or canvas.getContext "experimental-webgl"

这符合我的期望:

var initializeWebGL;

initializeWebGL = function(canvas) {
  var gl;
  return gl = canvas.getContext("webgl" || canvas.getContext("experimental-webgl"));
};

为了得到我真正想要的东西,我必须用括号括起getContext个参数:

initializeWebGL = (canvas) ->
    gl = canvas.getContext("webgl") or canvas.getContext("experimental-webgl")

产生我想要的东西:

var initializeWebGL;

initializeWebGL = function(canvas) {
  var gl;
  return gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
};

有没有更好的方法来实现我想要实现的目标,而不是像在第二个例子中那样在函数调用周围添加括号?

2 个答案:

答案 0 :(得分:5)

  

有没有更好的方法来实现我想要实现的目标,而不是像在第二个例子中那样在函数调用周围添加括号?

不,我不这么认为。我的经验法则是,当函数调用及其参数是一行中的最后一项时,省略括号是可以的,否则包括它们。

确定

someFunction 1, 2, 3

不行

someFunction 1, someOtherFunction 2, 3

总的来说,我试图避免过于简洁,简洁的陈述。他们更难以在精神上工作,并且在调试器中踩踏是比较棘手的。

答案 1 :(得分:3)

我不会说这是一种更好的方法,但你可以这样做:

initializeWebGL = (canvas) ->
  gl = canvas.getContext "webgl"
  gl = gl or canvas.getContext "experimental-webgl"

我个人更喜欢可读性而不是编写更少的代码:

initializeWebGL = (canvas) ->
  gl = canvas.getContext "webgl"
  if !gl? then gl = canvas.getContext "experimental-webgl"