if x < change.pageX # pageX is cross-browser normalized by jQuery
val = Number(elem.text())
return elem.text(o.max) if val + o.step > o.max
return elem.text(o.min) if val + o.step < o.min
elem.text(val + o.step)
else x > change.pageX
# same thing, only - instead of +
(咖啡脚本,但你明白了)。我正在寻找一个获取布尔值并将其转换为1(真)或-1(假)的技巧。这样我可以val + converted_bool * o.step
并保存if。
答案 0 :(得分:9)
你可以这样做......
+x||-1
如果x===true
,则+x
为1
,-1
已短路。
如果x===false
,+x
为0
,则会返回-1
。
这是另一种方式......
[-1,1][+x]
如果x===true
,[+x]
将获取数组的索引1
。
如果x===false
,[+x]
将获取数组的索引0
。
答案 1 :(得分:5)
听起来像conditional (ternary) operator
的工作if true then 1 else -1
1
if false then 1 else -1
-1
答案 2 :(得分:1)
我觉得这样会起作用:
b2i = (x) -> if x then 1 else -1
b2i(true) # => 1
b2i(false) # => -1
该函数定义将导致(不是非常令人兴奋)JavaScript:
var b2i;
b2i = function(x) {
if (x) {
return 1;
} else {
return -1;
}
};
注意,CoffeeScript ?
是存在操作符,所以
x ? 1 : -1
将转换为smth有点意外
if (typeof x !== "undefined" && x !== null) {
x;
} else {
({ 1: -1 });
};
答案 3 :(得分:1)
(~_ true)+3和(~false)会给你1和负1:)
答案 4 :(得分:0)
你在寻找除了这个简单的javscript之外的任何东西:
boolVal ? 1 : -1
或者,以函数形式:
function convertBool(boolVal) {
return(boolVal ? 1 : -1);
}
涉及布尔值的直接数学将true
转换为1
,将false
转换为0
:
var x,y;
x = false;
y = 2;
alert(y + x); // alerts 2
x = true;
y = 2;
alert(y + x); // alerts 3
如果感兴趣的话,这里提供的答案中有四种jsperf test作为答案。在Chrome中,三元解决方案的速度提高了7倍以上。
答案 5 :(得分:0)
啊哈!
2 * (!!expression) - 1
答案 6 :(得分:0)
您也可以在coffeescript中输入javascript:
foo = `bar ? 1 : -1`