【问题标题】:Explain this JS shorthand: `var myVar = i === 0` [duplicate]解释这个 JS 简写:`var myVar = i === 0` [重复]
【发布时间】:2018-03-18 08:21:04
【问题描述】:

我正在使用 http://buildwithreact.com/tutorial/state 学习 React

有一段代码 sn-p 包含一段我以前从未遇到过的 JS 代码 - 第 5 行(包含注释)。我认为这是一个简写。它表达了什么?

var BoardSwitcher = React.createClass({
  render: function() {
    var boards = [];
    for (var ii = 0; ii < this.props.numBoards; ii++) {
      var isSelected = ii === 0;  // WHAT DOES THIS MEAN ???
      boards.push(
        <Board index={ii} selected={isSelected} key={ii} />
      );
    }

    return (
      <div>
        <div className="boards">{boards}</div>
        <button>Toggle</button>
      </div>
    );
  }
});

【问题讨论】:

  • 只有当ii0(循环的第一次迭代)时,它才设置为true
  • 如果i 等于0,它会将myVar 设置为true,否则myVar 将是false
  • @Kaiido 你能用普通的 JS 语法重写它,以便我能完全理解吗?
  • 这不是速记,真的。它声明了一个名为isSelected 的变量。该变量的初始值是表达式i===0 的结果。这里根本没有什么奇怪的。评估表达式。它将是truefalse。那么这就是变量的初始值。你被===弄糊涂了吗?
  • @LGSon 好的,非常感谢

标签: javascript reactjs syntax


【解决方案1】:

=== is an operator that tests equality without autocasting,并返回一个布尔值; true 如果两个值相等且类型相同,则 false 否则。然后将此布尔值分配给变量isSelected

You can interactively try it 看看会发生什么:

> var ii = 0;
> var isSelected = ii === 0;
> console.log(isSelected);
true
> var ii = 1;
> var isSelected = ii === 0;
> console.log(isSelected);
false

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 2022-10-14
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多