js学习笔记(运算符~比较运算符)

运算符
1.按功能划分
(1)算数运算符
(2)位运算符
(3)关系运算符
(4)逻辑运算符
2.按操作数个数划分
(1)单目运算符:只有1个操作数,如i++
(2)双目运算符:有2个操作数,如a+b
(3)三目运算符:三目运算符也称问号运算符 a>b?a:b
3.运算符的结合性
(1)自左至右(先左后右)
(2)自右至左(先右后左)

算术运算符
(1)加法运算
a.非Number类型加法运算时,会将这些值先转换成Number类型再进行计算

document.write(true + true + '<br>'); //输出为2

b.任何值和NaN做加法运算时都得NaN

document.write(true + undefined + '<br>'); //输出为NaN

c.任何值和字符串做加法运算时,都先会转换成字符串,然后再进行字符串拼串的操作

document.write(true + "undefined" + '<br>'); 
//输出trueundefined

(2)减法运算
a.非Number类型减法运算时,会将这些值先转换成Number类型再进行计算
b.任何值和NaN做减法运算时都得NaN
c.字符串做减法也会转换成Number

document.write(100 - "undefined" + '<br>'); //输出为NaN

(3)乘法运算:规律同减法
(4)除法运算:规律同减法
分母为0时结果为无穷大

document.write(100 / 0 + '<br>'); //输出为Infinity

(5)取余运算:a%b,取余数

//m%n
document.write(10 % 3 + '<br>'); //余数为1
//n=0,输出结果为NaN
document.write(10 % 0 + '<br>'); //输出为NaN
//m=0,输出结果为0
document.write(0 % 10 + '<br>'); //输出为0
//m<n,输出结果为m
document.write(9 % 10 + '<br>'); //输出为9

一元运算符
(1)正号
非Number类型加法运算时,会将这些值先转换成Number类型再进行计算
(2)负号

赋值运算符
=号
1.简单赋值运算符:变量 = 数据

var num = 100;
var value = num;
num = 90;
document.write(num + "<br>");//num输出为90
document.write(value + '<br>');//value仍旧输出为100

改变num的值并不会间接改变value的值
在这里插入图片描述
2.复合赋值运算符
+=加后赋值:a+=1 即 a=a+1
-=减后赋值:a+=1 即 a=a-1
*=乘后赋值:a*=1a=a*1
/=除后赋值:a/=1 即 a=a/1
%=取模后赋值:a%=1 即 a=a%1
注意a*=1+2
即为a=a*(1+2)
由于赋值运算是右结合性,所以先计算等号右边,然后再进行复合运算

自增/自减运算符
1.后缀表达式i++; i--;
先用x的当前值作为表达式的值,再进行自增自减运算,“先用,后变”,先用变量的值参与运算,参与运算之后变量的值再进行自增自减运算。

var a = 10 , b = 20;
document.write((a++) + (b++)+ "<br>");//输出30
document.write(a + '<br>');//输出11
document.write(b + '<br>');//输出21

2.前缀表达式++i; --i;
先完成变量的自增自减运算,再用x的值作为表达式的值,“先变,后用”,变量的值先变,再参与运算。

var a = 10 , b = 20;
document.write((++a) + (++b)+ "<br>");//输出32
document.write(a + '<br>');//输出11
document.write(b + '<br>');//输出21

逻辑运算符
1.&&(与运算符)
(1)对于非Boolean类型的数值,逻辑与会自动转换成Boolean类型来判断
(2)如果条件A不成立,则返回条件A的数值本身
(3)如果条件A成立,不管条件B成立不成立,都返回条件B数值本身

var a = '111' && '0';
document.write(a + '<br>');//输出为0
var a1 = '111' && 'abc';
document.write(a1 + '<br>');//输出为abc
var a2 = 0 && 'abc';
document.write(a2 + '<br>');//输出为0

2.||(或运算符)
(1)对于非Boolean类型的数值,逻辑与会自动转换成Boolean类型来判断
(2)如果条件A不成立,则不管条件B成立不成立,都返回条件B数值本身
(3)如果条件A成立,则返回条件A的数值本身

var a = '111' || '0';
document.write(a + '<br>');//输出为111
var a1 = 0 || 'abc';
document.write(a1 + '<br>');//输出为abc
var a2 = 0 || null;
document.write(a2 + '<br>');//输出为null

和逻辑与相反
3.!(非运算符)
对于非Boolean类型的数值进行取返,先将它转换成布尔值,然后再取反

var a = !0;
document.write(a + '<br>');//输出为true

比较运算符
1.运算结果只有true和false两种。

==判断值是否相等
===绝对等于(值和类型均相等)
!=值不等于
!==不绝对等于(值和类型有一个不相等,或两个都不相等)
>大于
<小于
>=大于等于
<=小于等于

2.对非数值进行比较时,会将其转换成数值然后再比较
3.如果符号两侧的值都是字符串时,不会将其转换为数字进行比较,而会比较字符串中字符的Unicode编码
4.null、undefined、NaN比较

document.write(Number(null) + '<br>'); //输出0
document.write(null == 0); //输出false
document.write(undefined == 0); //输出false
document.write(NaN == NaN); //输出为false

注意比较两个字符串类型的数字时,可能得不到预期的结果,所以要先将它们转成数字类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值