js运算符

js运算符

1.数字的加法运算

数字+数字=数字运算;

例:

console.log( 1 + 1 ); //结果为2;

特殊运算:

console.log(0.1+0.2); //结果为0.333333333334;js存储数据是IEE47->双精度浮点数

计算准确结果的方式:

console.log((0.1 * 10+0.2 * 10)/10);	//碰到浮点数的方法:先将小数转为整数,再进行还原操作;

其他数据之间的运算:

  • NaN和谁运算都是NaN
  • Infinity 的运算符合数学计算规则;
  • Infinity+(-Infinity) 计算结果为NaN,超出了最大的数值范围;

2.字符串的加法运算

‘字符串’+其他数据类型=字符串;

字符串+字符串:

例:

var str1='abc';
var str2='456';
console.log(str1+str2);  //结果为'123456'实现字符串拼接;
console.log(str1 ,str2);//运算得出两个结果'123 456';

数字+字符串:

例:

console.log( 1 +'2');		//计算结果是一个字符串,任何数据类型和字符串进行加法运算都会转为字符串;

对象+字符串 :

console.log( {} + '1');		//结果是[object object]1;

所有的对象都会先转化为[object object];字符串,这个过程中编译系统会进行隐式类型转化用.toString

数组+字符串:

同样是把数组转为字符串,用的还是隐式类型转化。

undefined +字符串null+字符串

都是先用String()将他们转化为字符串再进行拼接;

3.undefined&null加法运算:

undefined ,Null在进行加法运算的时是被动的,如果是与数字进行加法运算会有Number()隐式类型转化转为数字;

若是与字符串进行加法运算,则转为字符串;

console.log(undefined+null);   //结果为NaN;
console.log(null+1);		   //结果是1,null会自动转换为零
console.log(undefined+1)		//结果是NaN;

4.object&Array 加法运算:

object&Array 在运行加法的时候会用 .toString转为字符串;

console.log({age:5}+5);		//结果是一个[object,object]5;
console.log([]+1);  		//字符串做加法,会进行解构
console.log(undefined+[]);	//结果是一个字符串undefined;

5.数字的减法:

正常数字-正常数字=数学运算;

console.log(2-3);		//结果为-1;

浮点数-浮点数,和加法一样需要先转为整数;

Infinity和数字的运算都是Infinity; NaN和任何数据的运算都是NaN;

所有数据类型在进行减法运算的时候都会被转为数字:

console.log('123'-1)//结果为122;

console.log('123.1'-1);		//结果为122.1

console.log(undefined-1);	//结果为NaN;

console.log(null-1);		//结果为-1;null会被转换为数字零

6.object &Array的减法

console.log({}-100);  //结果都为NaN;

console.log([]-100); 	//结果为-100;

console.log(['1']-1);	//结果为0,数组中有多个元素时,减法结果为NaN;

7.乘法 * 和除法 /

用这两种运算符进行运算时所有的数据都会转化为数字;

数字和数字=数字运算;

除法特殊情况:

console.log(Infinty / Infinty);  //结果为NaN;

console.log( 2 / 0); 			//结果为Infinity;

console.log( -2 / 0 );			//结果为-Infinity;
console.log(1/3);				//结果为十七位的小数;

与Infinity的计算结果为NaN;

8.%求模运算->求余数

所有的数据类型都要转为数字;

9.++ 递增 &–递减

递增:

++操作符会把后面的数据类型转为数字然后再+1;

++num; 前置;

num++后置;

前置和后置的区别:

var num_a=123;
var result=++num_a+1;
console.log(num_a);			//结果为124;
console.log(result);  //运算结果为125;
var num_a=123;
var result =num_a++ +1;
console.log(num_a);			//结果为124;
console.log(result);		//结果为124;

递增递减操作不在运算中时结果是一样的;

使用递增或递减的符时只能用作变量;

递减:和递增操作符的使用规则类似;

10.Boolean 值中的操作符及运算

||或 && 与 ! 非 在用这些符号的时候会将操作符两边的数据利用隐式函数Boolean转为布尔值。

  • 0 NaN undefined null false “”用Boolean转化为布尔值时是false;
  • 除了以上六位。用Boolean转为布尔值时都是true;

||或:

从左往右 先把左边的数据转为布尔值,如果为true停止,如果为false继续找;

直到最后找到true停止,则寻找结果为true的这个值。

若到最后没找到true,则结果就是所有中的最后一个值;

&&与

从左往右 先把左边的数据转化为布尔值,如果为false,则结果是布尔值为false的值。

如果为true继续下一个;

!非

把boolean值为true的值转为false,结果为false;

把false转为utrue,结果为true;

11.关系操作符

小于(<)、大于(>)、小于等于(<=)、和大于等于(>=)这几个关系操作符用于对两个值进行比较,这几个操作符都返回布尔值。

var result1=5>3;			//true
var result2=5<3;			//false

多个数据间进行比较操作:

  • 如果两个操作数都是数值,则执行数值比较。
  • 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值。
  • 如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较。
  • 如果一个操作数是对象,则调用这个对象的 valueOf()方法,用得到的结果按照前面的规则执 行比较。如果对象没有 valueOf()方法,则调用 toString()方法,并用得到的结果根据前面 的规则执行比较。
  • 如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较。
  • 如果一个操作数是字符串,另一个数值,若字符串开头为数值型的字符则先将之转为数值(遇到字符停止转化)再与另一个数值进行比较
var result='123a4'>1233			//结果是true

​ 这里的话是先将字符串’123a4’转为数值123,然后再与1233进行比较的

  • 任何数值和NaN比较都是false;

  • 如果是开头为非数值型字符串与数字相比较时,字符会先转为NaN

var result='a'>2;		//结果是false,这里会先将'a'转化为NaN

12.相等操作符

相等和不相等:

相等操作符(==),如果两个操作数相等,返回true。

而不相等操作符由叹号和等号(!=)表示,如果两个操作数不相等,则返回true;

这两个操作符都会先转换操作数(强制转型),然后再比较他们的相等性;

  • 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false 转换为 0,而 true 转换为 1;
  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
  • 如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf()方法,用得到的基本类 型值按照前面的规则进行比较;
  • null 和 undefined 是相等的。
  • 如果有一个操作数是 NaN,则相等操作符返回 false,而不相等操作符返回 true。重要提示: 即使两个操作数都是 NaN,相等操作符也返回 false;因为按照规则,NaN 不等于 NaN。
  • 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象, 则相等操作符返回 true;否则,返回 false。

全等和不全等:

全等操作符由3歌等于号(===)表示,它只在两个操作数未经转换就相等的情况下返回true。

var result1={'55'===55};		//false,因为不同的数据类型不相等

不全等操作符由一个叹号后跟两个等于号(!==),表示。

13.条件操作符

var max=(num1>num2)? num1:num2;		//max中会保留一个最大值,如果为真,就将num1赋给max,为假则将num2赋给max;

14.赋值操作符

简单的赋值操作符由等于号(=)表示,起作用就是把右侧的值赋给左侧的变量

var num=10;			//将数值10赋给num变量

符合赋值:

var num+=10;		//其相当于num=num+10;

其他的复合算数操作符

*=、/=、%=、+=、-=、(左移)<<=、有符号右移(>>=)、无符号右移(>>>=);

15.逗号操作符

​ 使用逗号操作符可以在一条语句中执行多个操作,且可以声明多个变量

var num1=1,num2=2,num3=3;

还可以用于赋值。只有最后一项有效;

var num=(5,1,4,8,0);	//num的值为0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值