4

我只是在学习 CoffeeScript,我正在尝试做一些我通常会用普通的 ol 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");
};

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

4

2 回答 2

5

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

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

好的

someFunction 1, 2, 3

不好

someFunction 1, someOtherFunction 2, 3

一般来说,我尽量避免过于简洁、简洁的陈述。它们在精神上和单步调试器中都更难处理。

于 2013-11-02T20:46:39.237 回答
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"
于 2013-11-02T21:48:56.233 回答