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
你可以这样做…
+x||-1
x===true
,+x
为1
,-1
短路如果
x===false
,则+x
为0
,返回-1
还有一种方法…
[-1,1][+x]
如果
x===true
,[+x]
将抓取数组的索引1
如果
x===false
,[+x]
将抓取数组的索引0
听起来像是条件(三元)运算符的工作
if true then 1 else -1
1
if false then 1 else -1
-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 });
};
(~true)+3和(~false)将得到1和- 1:)
啊哈!
2 * (!!expression) - 1
您还在寻找其他内容吗?
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测试。在Chrome中,三元制的解决方案要快7倍以上。
你也可以在coffeescript中输入javascript:
foo = `bar ? 1 : -1`