首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Coffeescript中的true和false分别转换为1和-1

将Coffeescript中的true和false分别转换为1和-1
EN

Stack Overflow用户
提问于 2011-12-23 03:38:24
回答 7查看 3.9K关注 0票数 0
代码语言:javascript
复制
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 (true)或-1 (false)。这样我就可以执行val + converted_bool * o.step并保存一个if。

EN

回答 7

Stack Overflow用户

发布于 2011-12-23 03:56:34

你可以这样做...

代码语言:javascript
复制
+x||-1

如果为x===true,则+x1-1为short-circuited.

  • If x===false+x0,返回-1

这是另一种方法..。

代码语言:javascript
复制
[-1,1][+x]

  • 如果为x===true[+x]将获取数组的索引1
  • 如果为x===false[+x]将获取数组的索引<1>D25。
票数 10
EN

Stack Overflow用户

发布于 2011-12-23 03:39:44

听起来像是conditional (ternary) operator的工作

代码语言:javascript
复制
if true then 1 else -1
1
if false then 1 else -1
-1
票数 5
EN

Stack Overflow用户

发布于 2011-12-23 03:42:57

我觉得这样会行得通:

代码语言:javascript
复制
b2i = (x) -> if x then 1 else -1
b2i(true)  # => 1
b2i(false) # => -1

该函数定义将导致(不是非常令人兴奋的) JavaScript:

代码语言:javascript
复制
var b2i;

b2i = function(x) {
  if (x) {
    return 1;
  } else {
    return -1;
  }
};

注意,CoffeeScript ?是存在运算符,所以

代码语言:javascript
复制
x ? 1 : -1

将转换为smth有点出乎意料,因为

代码语言:javascript
复制
if (typeof x !== "undefined" && x !== null) {
  x;
} else {
  ({ 1: -1 });
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8608888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档