Javascript 逻辑运算符 && 用于分配属性

问题描述 投票:0回答:2

我遇到了这段代码:

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();

任何人都可以解释一下上面和示例中所述的初始行与 && 的作用吗?

javascript operators logical-operators
2个回答
1
投票
var value = this.newTodo && this.newTodo.trim();

如果 this.newTodo 不是“假”值之一,即

""
0
false
undefined
null
[]
(我确信我忘记了一些),然后
value = this.newTodo.trim()
,否则
value = this.newTodo
(可能是
""
0
false
undefined
null
[]
等)

我的代码示例,我没有看到任何区别,因为当我使用这个时:

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

而不是这个:

var 值 = this.newTodo;

如果 this.newTodo 是

"Hello World"
...你是对的,没有区别

如果 this.newTodo id

" Hello World "
... 值将是
"Hello World"
... 即 trimmed 的前导和尾随空格


0
投票

因为 Javascript 是一种松散类型语言,所以布尔运算符 && 和 ||可以采用任何类型作为操作数。

&& 运算符从左到右进行运算,返回第一个“假”操作数。如果没有找到假操作数,则返回最后一个操作数

||运算符从左到右进行运算,返回第一个“真实”操作数。如果没有找到真实的操作数,则返回最后一个操作数。

假值有 ""、''、0、false、未定义、null、Nan

真实值是所有其他值。有趣的是,空对象 {} 和空数组 [] 都是 true。

示例:

this.newTodo =“你好世界” 让 value = this.newTodo && this.newTodo.trim()

首先测试 this.newTodo 是真还是假。这是真的,所以我们转向下一个操作数:this.newTodo.trim()。 this.newTodo.trim() 也是 true,所以我们返回最新的操作数,即 this.newTodo.trim()

this.newTodo =“你好世界” 让 value = this.newTodo && this.newTodo.trim()

this.newTodo 是真的,所以我们转向第二个操作数。 this.newTodo.trim() 也是真的。由于没有更多的操作数,并且我们还没有找到错误的操作数,因此我们返回 this.newTodo.trim(),即“Hello World”。

如果 this.newTodo 是一个假值,例如 null 或 undefined 或“”,那么我们永远不会移动到第二个操作数,而只是返回第一个操作数。

我认为表达式

let value = this.newTodo && this.newTodo.trim()
的要点是避免在 this.newTodo 为假时调用修剪函数。

© www.soinside.com 2019 - 2024. All rights reserved.