首页 > Web开发 > 详细

JS_03

时间:2021-08-04 19:16:38      阅读:18      评论:0      收藏:0      [点我收藏+]

一、数学运算符

概述:数学运算符也称之为数学操作符。

注意:在JS中,不仅仅是Number类型的数据可以参与数学运算,其他类型的数据(字符串、布尔、未定义、空对象)也可以参与数学运算,只不过浏览器中的解析器自动的将其他类型的数据“隐式转换”为数字参与数学运算

1.1、Number类型的数值参与数学运算

特殊值Infinity和NaN

技术分享图片

 

 

比较特殊的就是Infinity做取余运算时结果是NaN

对于NaN而言,它的数学运算(加减乘除取余)的结果都是NaN

1.2、其他类型的数据参与数学运算(不包含字符串类型)

原理:浏览器中的解析器,底层是通过内置的函数Number,将其他类型的数据隐式转换为数字类型

console.log(Number(ture));//1

console.log(Number(false));//0

console.log(Number(undefined));//NaN

console.log(Number(null));//0

eg:

console.log(true + 66);//67

console.log(false * 88);//0

console.log(undefined + 100);//NaN

console.log(null - 66);//-66

console.log(true + null);//1

2.3、String类型参与数学运算

字符串参与数学运算有两种情况

I、字符串和加好一起使用(连字符)。将数据从左到右依次拼接,转换为字符串

console.log("张三"+12306);//张三12306

console.log("张三"+"李四");//张三李四

II、字符串和减、乘、除、取余进行数学运算时,字符串需要隐式转换为数字参与

console.log(Number(""));//0

console.log(Number("一个湖人粉丝"));//NaN

console.log(Number("123"));//123

console.log(Number("123冲冲冲"));//NaN

总结:

空字符串隐式转换为数字0

纯数字字符的字符串隐式转换为对应的数字

非纯数字字符的字符串隐式转换为NaN

eg:

console.log("666" - 123);//543

console.log("" * 999);//0

console.log("张三" / 33);//NaN

console.log("abcd" % 123);//NaN

总结:

字符串和加号使用是连字符

字符串和其他四个运算符使用,需要隐式转换为对应的数字类型再进行运算

二、比较运算符

概述:在JS中,也有比较运算符(比较操作符)。比如:大于,小于,大于等于等等,在JS语言中,比较运算符一共是八个(大于,大于等于,小于,小于等于,等于,不等于,全等,不全等)

作用:进行数据对比,如果对比结果是真的,则返回布尔值true;反之则返回布尔值false

特别注意:不仅仅是数字类型的数据可以参与比较运算,其他类型的数据(字符串、布尔值、未定义、空对象)也可以参与比较运算,只不过浏览器中的解析器将其他类型的数据隐式转换为数据类型的数据进行比较运算

技术分享图片

 

 

 注意:

一个等号是赋值运算符,不是用来比较大小的

两个等号是比较运算符,是相等的判断,判断的依据是数值是否相等

三个等号也是比较运算符,是全等的判断,判断的依据是数值和数据类型是否全等

2.1、Number类型的数值参与比较运算

console.log(3 > 8);//false

console.log(66 >= 66);//true

console.log(3 == 3);//ture

console.log(3 != 6);//true

console.log(6 === 6);//true

特别注意:相等和全等的区别

相等只是判断数值是否相等而全等既要判断数值类型又要判断数值大小

eg:

console.log(99 == 99);//true

console.log(99 == "99");//true

console.log(99 === 99);//true

console/log(99 === "99");//false

两个特殊值参与比较运算的情形:

概述:在JS中,全部特殊值【数字类型:Infinity NaN;未定义类型:undefined;空对象类型:null】中,只有NaN与自身比较时是不等的,其他所有特殊值与自身比较时都是相等的。

技术分享图片

 

 

NaN除了与带!运算时结果为真,其他情况都是假

2.2、其他类型的数据参与比较运算(不包含字符串类型)

概述:在JS中,其他类型的数据(布尔、未定义、空对象)也可以参与比较运算,需要注意的是,其他类型的数据参与比较运算时,需要“隐式转换”为Number类型参与比较运算

技术分享图片

 

 

2.3、字符串类型参与比较运算

I、其他类型的数据(数字,布尔,未定义,空对象)和字符串进行对比。通过隐式转换为数字进行对比

II、字符串和字符串进行对比。通过ACSII进行对比

两个字符串通过从左到右一个一个字符进行比较,直到比较出结果为止

ACSII表的一般规律:

0~9<A~Z<a~z

技术分享图片

 

 

  console.log(undefined != "ahds");//true

  console.log(null != "asdw");//true

技术分享图片

 

 

三、逻辑运算符

 概述:在JS中有逻辑运算符(逻辑操作符)。一共是三个:逻辑与&&、逻辑或||、逻辑非!。在JS中一般是布尔值参与逻辑运算,但是其他的类型的数值也可以参与逻辑运算,只不过浏览器中的解析器将其他类型的数据“隐式转换”为布尔类型的数据参与逻辑运算

3.1、布尔类型数值参与逻辑运算

3.1.1、逻辑与

概述:当两者(AB)同时为真时返回的结果才为真

语法格式:A&&B

eg:

console.log(true && true);//true

console.log(true && false);//false

console.log(false && true);//false

console.log(false && false);//false

3.1.2、逻辑或

概述:当两者有一个为真,则返回结果为真

语法格式:A||B

eg:

console.log(true || true);//true

console.log(true  ||  false);//true

console.log(false  ||  true);//true

console.log(false  ||  false);//false

3.1.3、逻辑非

概述:置反作用(真转换为假,假转换为真)

语法格式:!A

console.log(!true);//false

console.log(!false);//true

console.log(!!!true);//false

注意:逻辑非运算符可以同时出现多个

4.2、其他类型的数据参与逻辑运算

概述:在JS中,其他类型的数据(数字类型、字符串、未定义、空对象)也可以参与逻辑运算,像这种非常规的现象,返回的结果可能不是布尔值。这是由于其他类型的数据参与逻辑运算的时候,浏览器中的解析器会自动的将这些数据隐式转换成布尔值参与。

浏览器通过Boolean内置函数来将其他类型的数据类型隐式转换为布尔值

数字类型隐式转换为布尔值:

eg:

console.log(Boolean(0));//false

console.log(Boolean(123));//true

console.log(Boolean(Infinity));//true

console.log(Boolean(NaN));//false

总结:

只有数字0和NaN隐式转换为布尔值false,其他的数字都类型都隐式转换为布尔值true

字符串类型隐式转换为布尔类型

console.log(Boolean(""));//false

console.log(Boolean(" "));//true

console.log(Boolean("131551asdw"));//true

总结:

只有空字符串隐式转换为布尔值false,所有非空字符串都隐式转换为布尔值true

未定义类型和空对象类型隐式转换为布尔类型:

console.log(Boolean(undefined));//false

console.log(Boolean(null));//false

总结:

未定义类型和空对象类型隐式转换为布尔值false

4.2.1、逻辑与

//做题秘诀:逻辑与就是两个灯泡串联,若A灯泡亮了则电流会流到B,结果为B;若A灯泡不亮,则电流只会流到A结果为A。

console.log(0 && 99);//0

console.log(135 && 666);//666

console.log(NaN && Infinity);//NaN

console.log(null && undefined);//null

console.log("张三" && "李四");//李四

4.2.2/逻辑或

//做题秘诀:逻辑或就是两个灯泡并联,若A灯泡亮了,则电流可以通过A,所以结果是A;若A灯泡不亮,则电流会通过B,结果为B。

console.log(0 || 66);//66

console.log(0 || NaN);//NaN

console.log(123 || 456);//123

console.log("" || Infinity);//Infinity

console.log(undefined || "asdw");//asdw

4.2.3、逻辑非

console.log(!0);//true

4.2.4、小练习:

console.log(3 > 6 && 99 > 22);//false

console.log(6 > 3 && "edgs11冠军");//edgs11冠军

console.log(66 < 100 || 3 > 99);//true

 

JS_03

原文:https://www.cnblogs.com/DavisHuang/p/15099237.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!