资讯专栏INFORMATION COLUMN

JavaScript 操作符(二)

lemanli / 400人阅读

摘要:布尔操作符逻辑非将操作数任何数据类型转换为一个布尔值,并求反。除和以外的任何类型,此操作都会返回任何非空的类型,此操作都会返回连续使用两个可达到函数同样的效果。

布尔操作符 逻辑非(!

将操作数(任何数据类型)转换为一个布尔值,并求反。

!null; // true
!undefined; // true
!true; // false
!false; // true
!0; // true
!NaN; // true
!1; // false  除 0 和 NaN 以外的任何 Number 类型,此操作都会返回 false
!""; // true
!"s"; // false 任何非空的String类型,此操作都会返回false
!Symbol(); // false

连续使用两个 ! 可达到 Boolean() 函数同样的效果。

!!null; // false
// ...
逻辑与(&&

属于短路操作,当第一个操作数求值结果为false(如果不为Boolean类型则存在一个隐形转换),则不会再对第二个操作数求值,并返回第一个操作数;只有当第一个操作数位 true 才会返回第二个操作数(不论第二个操作数是 true 还是 false)。

const b1 = true;
const result1 = (b1 && undefined_variable); // ReferenceError
console.log(result1);

const b2 = false; // 如果是非 Boolean 类型则会自动转为 Boolean 类型
const result2 = (b2 && undefined_variable); 
console.log(result2); // false

b1 && console.log("只有第一个操作数为真,我才会出现在控制台")
b2 && console.log("只有第一个操作数为真,我才会出现在控制台")
逻辑或(||

同样属于短路操作,当第一个操作数求值结果为 true (如果不为Boolean类型则存在一个隐形转换),则不会对第二个操作数求值,并返回第一个操作数;只有当第一个操作数为 false 才会返回第二个操作数(不论第二个操作数是 true 还是 false)。

const b1 = true;
const result1 = (b1 || undefined_variable); 
console.log(result1); // false

const b2 = false;
const result2 = (b2 || undefined_variable); // ReferenceError
console.log(result2);

b1 || console.log("你在控制台看不到我")
b2 || console.log("我会出现在控制台!因为b2 === false")
加性操作符 加法

Number类型:

任何数加NaN,结果都是NaN

Infinity + Infinity = Infinity

Infinity - Infinity = NaN

-Infinity - Infinity = -Infinity

0 + 0 = 0

0 - 0 = 0

-0 - 0 = -0

操作数中包含 String 类型,则将非 String 类型转为 String 类型并拼接。

ObjectBoolean类型,则调用它们的toString()方法获得字符串值。默认情况下 Object 类型返回 "[object Object]"Boolean类型 true 返回 "true"false 返回 "false"

Undefined类型或Null类型: 调用 String() 取得字符串 "undefined""null"

const s1 = "" + "s"; 
const s2 = "str" + { name: "Ashin" }; 
const s3 = "str" + true;
const s4 = "str" + null;
const s5 = "str" + undefined;

console.log(s1); // "s"
console.log(s2); // "str[object Object]"
console.log(s3); // "strtrue"
console.log(s4); // "strnull"
console.log(s5); // "strundefined"
减法 乘性操作符 乘法 除法 求模 关系操作符 相等操作符 相等和不相等 全等和不全等

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105750.html

相关文章

  • 细说 Javascript 类型篇() : typeof 作符

    摘要:操作符还有可能是设计中最大缺陷,因为它几乎是完全破损的。由于用法与调用函数的语法相似,因此常被误以为是函数调用,实际上并不存在名为的函数,只是一个操作符而已。而列则表示对象内部的属性。属性文档中明确地给出了获得属性的途径,就是使用。 typeof 操作符(还有 instanceof)可能是 Javascript 设计中最大缺陷,因为它几乎是完全破损的。由于 typeof 用法与调用函数...

    PAMPANG 评论0 收藏0
  • 重新巩固JS()——JavaScript作符与表达式

    摘要:重新巩固系列,都是比较基础的东西,可以进行查漏补缺,很快看完,这是第二篇。关系运算符用于比较操作符左右的操作数的大小。逻辑运算符主要通过与或非来判断一个表达式的值是否为。注意与和或操作具有短路计算效果。重新巩固JS系列,都是比较基础的东西,可以进行查漏补缺,很快看完,这是第二篇。 其他JS重新巩固系列: 重新巩固JS(一)——JavaScript基本类型 重新巩固JS(三)——JavaSc...

    DoINsiSt 评论0 收藏0
  • JavaScript Dom编程艺术》读书笔记(

    摘要:逻辑非操作符只能作用于单个逻辑操作数,其结果是把那个逻辑操作数所返回的布尔值取反。如果那个逻辑操作数所返回的布尔值是,逻辑非操作符将把它取反为为了避免产生歧义,上面这条语句把逻辑操作数放在了括号里,使逻辑非操作符作用于括号里的所有内容。 算术操作符 加减乘除这些算术操作中的每一种都必须借助于相应的操作符才能完成。操作符是JavaScript为完成各种操作而定义的一些符号。等号(=)、加...

    caspar 评论0 收藏0
  • JavaScript Dom编程艺术》读书笔记(

    摘要:逻辑非操作符只能作用于单个逻辑操作数,其结果是把那个逻辑操作数所返回的布尔值取反。如果那个逻辑操作数所返回的布尔值是,逻辑非操作符将把它取反为为了避免产生歧义,上面这条语句把逻辑操作数放在了括号里,使逻辑非操作符作用于括号里的所有内容。 算术操作符 加减乘除这些算术操作中的每一种都必须借助于相应的操作符才能完成。操作符是JavaScript为完成各种操作而定义的一些符号。等号(=)、加...

    xingpingz 评论0 收藏0
  • JavaScript Dom编程艺术》读书笔记(

    摘要:逻辑非操作符只能作用于单个逻辑操作数,其结果是把那个逻辑操作数所返回的布尔值取反。如果那个逻辑操作数所返回的布尔值是,逻辑非操作符将把它取反为为了避免产生歧义,上面这条语句把逻辑操作数放在了括号里,使逻辑非操作符作用于括号里的所有内容。 算术操作符 加减乘除这些算术操作中的每一种都必须借助于相应的操作符才能完成。操作符是JavaScript为完成各种操作而定义的一些符号。等号(=)、加...

    Aceyclee 评论0 收藏0
  • 【连载】前端个人文章整理-从基础到入门

    摘要:个人前端文章整理从最开始萌生写文章的想法,到着手开始写,再到现在已经一年的时间了,由于工作比较忙,更新缓慢,后面还是会继更新,现将已经写好的文章整理一个目录,方便更多的小伙伴去学习。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 个人前端文章整理 从最开始萌生写文章的想法,到着手...

    madthumb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<