告诉您五个要命实用的操作符

逻辑或

逻辑或操作符由五个竖线符号(||)表示,有多少个操作数,如下边的例证所示:

var result = true || false;

与逻辑与操作相似,即便有一个操作数不是布尔值,逻辑或也不必然再次来到布尔值;此时,它遵守下列规则:

若是第一个操作数是目的,则赶回第一个操作数;

比方首个操作数的求值结果为false,则赶回第二个操作数;

一经七个操作数都是目标,则赶回第一个操作数;

只要六个操作数都是null,则赶回null;

假诺多少个操作数都是NaN,则赶回NaN;

设若六个操作数都是undefined,则再次来到undefined。

与逻辑与操作符相似,逻辑或操作符也是短路操作符。也就是说,借使第一个操作数的求值结果为true,就不会对第二个操作数求值了。下边看一个事例:

var found = true;

var result = (found || someUndefinedVariable);    // 不会生出错误

alert(result);    // 会执行(”true”)

其一例子跟前边的例子一样,变量someUndefinedVariable也没有概念。然而,由于变量found的值是true,而变量someUndefinedVariable永远不会被求值,由此结果就会输出”true”。假诺像下面这么些例子一样,把found的值改为false,就会招致错误:

var found = false;

var result = (found || someUndefinedVariable);    // 那里会发生错误

alert(result);    // 这一行不会实施

大家得以应用逻辑或的这一行为来避免为变量赋null或undefined值。例如:

var myObject = preferredObject || backupObject;

在那多少个例子中,变量myObject将被予以等号前面多少个值中的一个。变量preferredObject中包含优先赋给变量myObject的值,变量backupObject负责在preferredObject中不带有有效值的操作符情况下提供后备值。如若preferredObject的值不是null,那么它的值将被赋给myObject;假倘诺null,则将backupObject的值赋给myObject。ECMAScript程序的赋值语句平日会采取那种格局

逻辑与

逻辑与操作符由三个和号(&&)表示,有七个操作数,如下面的例证所示:

var result = true && false;

逻辑与的真值表如下:

逻辑与操作可以动用于另外类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的状态下,逻辑与操作就不必然重返布尔值;此时,它遵守下列规制:

一旦第一个操作数是目的,则赶回第二个操作数;

只要第二个操作数是目的,则唯有在率先个操作数的求值结果为 true
的状况下才会重临该目的;

设若多少个操作数都是目的,则赶回第二个操作数;

假若有一个操作数是null,则赶回null;

尽管有一个操作数是NaN,则赶回NaN;

如若有一个操作数是undefined,则重回undefined。

逻辑与操作属于短路操作,即假使第一个操作数可以决定结果,那么就不会再对第二个操作数求值。对于逻辑与操作而言,假设第一个操作数是false,则不管第二个操作数是什么值,结果都不再可能是true了。来看下边的事例:

var found = true;

var result = (found && someUndefinedVariable);    // 这里会生出错误

alert(result);    // 这一行不会举行

在上头的代码中,当执行逻辑与操作时会暴发错误,因为变量someUndefinedVariable没有阐明。由于变量found的值是true,所以逻辑与操作符会继续对变量someUndefinedVariable求值。但someUndefinedVariable尚未定义,因而就会招致错误。这表达不可以在逻辑与操作中利用未定义的值。假诺像下面这么些例中一样,将found的值设置为false,就不会发出错误了:

var found = false;

var result = (found && someUndefinedVariable);    // 不会暴发错误

alert(result);    // 会执行(”false”)

在这多少个事例中,警告框会展现出来。无论变量someUndefinedVariable有没有定义,也永远不会对它求值,因为第一个操作数的值是false。而这也就意味着逻辑与操作的结果必然是false,根本用不着再对&&左边的操作数求值了。在应用逻辑与操作符时要一味铭记它是一个梗阻操作符。

本文由web前端精髓为你提供(喜欢自己的小说可以扫描关注本身啊!)