为什么这个coffeescript中的if语句

时间:2014-07-17 21:55:43

标签: javascript coffeescript

我是coffeescript的新手,很难理解我在atom.io项目中找到的一些代码。这是来自cursor.coffee文件的代码(此问题时的第306行)

  moveToEndOfWord: ->
    if position = @getEndOfCurrentWordBufferPosition()
      @setBufferPosition(position)

变成了

Cursor.prototype.moveToEndOfWord = function() {
  var position;
  if (position = this.getEndOfCurrentWordBufferPosition()) {
    return this.setBufferPosition(position);
  }
};

我很难理解为什么if语句?由于正在使用赋值运算符而不是条件语句中的相等运算符,因此我理解要读取的代码

Cursor.prototype.moveToEndOfWord = function() {
  var position = this.getEndOfCurrentWordBufferPosition();
  return this.setBufferPosition(position);
};

任何可以解决这里发生的事情的光都会很棒。

1 个答案:

答案 0 :(得分:1)

赋值表达式具有一个值,即已分配的值。因此if语句使用赋值作为测试缓冲区位置的副作用