我正在学习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");
};
有没有更好的方法来实现我想要实现的目标,而不是像在第二个例子中那样在函数调用周围添加括号?
答案 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"