【问题标题】:Javascript Logical Operator && used to Assign Properties用于分配属性的 Javascript 逻辑运算符 &&
【发布时间】:2015-09-02 14:57:23
【问题描述】:

我遇到了这段代码:

var value = this.newTodo && this.newTodo.trim();

在本例中:http://codepen.io/anon/pen/rONEMQ?editors=101

我不明白 AND (&&) 运算符要完成什么。

据我了解,&& 运算符是将多个属性分配给一个值,但这里似乎并非如此。

我的代码示例,我看不出有什么区别,因为当我使用这个时:

var value = this.newTodo && this.newTodo.trim();

而不是这个:

var value = this.newTodo;

或者只是这样:

var value = this.newTodo.trim();

谁能解释一下,上面和示例中的初始行对 && 有什么作用?

【问题讨论】:

  • var value = this.newTodo && this.newTodo.trim(); roghly 是如果this.newTodotruthy 然后将this.newTodo.trim() 分配给value 变量
  • 如果this.newTodo 不计算为True,那么this.newTodo.trim() 将永远不会被调用。如果它确实评估为 True,那么它将被修剪。

标签: javascript operators logical-operators


【解决方案1】:
var value = this.newTodo && this.newTodo.trim();

如果 this.newTodo 不是“虚假”值之一,即""0falseundefinednull[](我确定我忘记了一些),然后是 value = this.newTodo.trim(),否则是 value = this.newTodo(可能是 ""0falseundefinednull[] 等)

我的代码示例,我看不出有什么区别,因为当我使用这个时:

var value = this.newTodo && this.newTodo.trim();

而不是这个:

var value = this.newTodo;

如果 this.newTodo 是 "Hello World" ...你是对的,没有区别

如果 this.newTodo id " Hello World " ... 值将是 "Hello World" ... 即修剪前导和尾随空格

【讨论】:

  • 所以可以这样写: var value = if (this.newTodo == false) { return this.newTodo; } else { 返回 this.newTodo.trim(); }
猜你喜欢
  • 2021-11-02
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 2020-10-02
  • 1970-01-01
相关资源
最近更新 更多