js 运算符_「js基础」JavaScript运算符总结,还不快来看看(上)

花了很长时间总结的JavaScript运算符,较言之,很全面的,几乎涵盖了JavaScript里所有的运算符,看完这篇文章后,你将会全方面的认识并学习JavaScript运算符,全面的认识它,弥补你对运算符的缺点,加深对运算符的学习应用程度,纯干货,感谢您的阅读。

引言

JavaScript运算符在JavaScript中相当重要,可以说在任何语言中都少不了这些东西,基础而又很常用,熟练地掌握它讲你的开发效率提高,况且在面试的时候,无论是笔试还是答题,这些基础经常会出现在你的眼前,比如或(||)与(&&)非(!)的含义,==和===的区别以及位移操作的相关知识,其实看着简单,实则里面大有含义,好了,话不多说,我们开始吧!

ac3f07449b1ddb06096a7f4f2f938be8.png

JavaScript运算符

JavaScript中包括很多运算符,其中有:

  1. 算术运算符
  2. 自增与自减
  3. 关系运算符
  4. 对象运算符
  5. 逻辑运算符
  6. 位运算符
  7. 其他运算符

算术运算符

算术运算符是对数值(文字或变量)的执行算术运算,算术运算符分为两种:一种是运算符,一种是复合赋值运算符。

那么最基本的运算符包含哪些呢?

1、加法运算符(+)加数:

其功能有三:

  • 对数字进行代数求和
  • 对字符串进行连接
  • 将一个数值转化成字符串(数值+空字符串),代码可读性较差,但相对String(Value)来说,我还是喜欢用这种转化方式

说起JavaScript中将一个值转化为字符串,我们可以有三种方法:

1、value.toString():但是它不能把null和undefined转换为字符串。

2、"" + value:使用加法运算符配合一个空字符串可以把任意值转换为字符串,我觉得这种方法代码的可读性很差,但相对String(value)来,还是有一些人更喜欢用这种转换方式。

3、String(value):这种方法可读性更好,唯一的问题是,这种函数调用可能会迷惑一些人,尤其是那些熟悉Java的程序员,因为String同时也是一个构造函数.要注意的是它作为普通函数和作为构造函数时的表现完全不同。

var n = 5;  //定义并初始化任意一个数值console.log(NaN + n);  //NaN与任意操作数相加,结果都是NaNconsole.log(Infinity + n);  //Infinity与任意操作数相加,结果都是Infinityconsole.log(Infinity + Infinity);  //Infinity与Infinity相加,结果是Infinityconsole.log((-Infinity) + (-Infinity));  //负Infinity相加,结果是负Infinityconsole.log((-Infinity) + Infinity);  //正负Infinity相加,结果是NaNconsole.log(1 + 1);  //如果操作数都是数值,则进行相加运算console.log(1 + "1");  //如果操作数中有一个是字符串,则进行相连运算console.log(3.0 + 4.3 + "");  //先求和,再连接,返回"7.3"console.log(3.0 + "" + 4.3);  //先连接,再连接,返回"34.3"   //3.0转换为字符串3

在使用加法运算符时,应先检查操作数的数据类型是否符合需要

提示:字符串拼接也分两种方式,字符串+字符串,二者可以直接拼接,字符串+数值,可先将数值转化为字符串然后在拼接。

2、减法运算符(-)减数

其功能也有三:

  • 对操作数进行“取反”操作
  • 对数字进行减法操作
  • 对字符串转化成数值
var n = 5;  //定义并初始化任意一个数值console.log(NaN - n);  //NaN与任意操作数相减,结果都是NaNconsole.log(Infinity - n);  //Infinity与任意操作数相减,结果都是Infinityconsole.log(Infinity - Infinity);  //Infinity与Infinity相减,结果是NaNconsole.log((-Infinity) - (-Infinity));  //负Infinity相减,结果是NaNconsole.log((-Infinity) - Infinity);  //正负Infinity相减,结果是-Infinityconsole.log(2 - "1");  //返回1console.log(2 - "a");  //返回NaN取反运算符也叫一元减法运算符console.log(- 5);  //返回-5。正常数值取负数console.log(- "5");  //返回-5。先转换字符串数字为数值类型console.log(- "a");  //返回NaN。无法完全匹配运算,返回NaNconsole.log(- Infinity);  //返回-Infinityconsole.log(- (- Infinity));  //返回Infinityconsole.log(- NaN);  //返回NaN

提示:在减法运算中,如果操作数为字符串,先尝试把它转换为数值,再进行运算。如果有一个操作数不是数字,则返回 NaN。

3、乘法运算符(*)乘数

其功能是对两个运算数进行乘法运算,这个就没有很多的其它运算了,遵从同号得正,异号得负,例如:

var n = 5;  //定义并初始化任意一个数值console.log(NaN * n);  //NaN与任意操作数相乘,结果都是NaNconsole.log(Infinity * n);  //Infinity与任意非零正数相乘,结果都是Infinityconsole.log(Infinity * (- n));  //Infinity与任意非零负数相乘,结果是-Infinityconsole.log(Infinity * 0);  //Infinity与0相乘,结果是NaNconsole.log(Infinity * Infinity);  //Infinity与Infinity相乘,结果是Infinity

4、除法运算符(/)除数。

其功能是对两个运算数进行除法运算,遵从同号得正,异号得负,例如:

var  n = 5;  //定义并初始化任意一个数值console.log(NaN / n);  //如果一个操作数是NaN,结果都是NaNconsole.log(Infinity / n);  //Infinity被任意数字除,结果是Infinity或-Infinity//符号由第二个操作数的符号决定console.log(Infinity / Infinity);  //返回NaNconsole.log(n / 0);  //0除一个非无穷大的数字,结果是Infinity或-Infinity,符号由第二个操作数的符号决定console.log(n / -0);  //返回-Infinity,解释同上

5、系数运算符(%)返回除法的余数。

其功能是返回两个除数的余数,例如:

var n = 5;  //定义并初始化任意一个数值console.log(Infinity % n);  //返回NaNconsole.log(Infinity % Infinity);  //返回NaNconsole.log(n % Infinity);  //返回5console.log(0 % n);  //返回0console.log(0 % Infinity);  //返回0console.log(n % 0);  //返回NaNconsole.log(Infinity % 0);  //返回NaN

自增与自减

功能相反:

++:对唯一的运算数进行递增操作(每次加1)

--:对唯一的运算数进行递减操作(每次减1)

规则相同:

运算数必须是一个变量、数组的一个元素或者对象的属性,如果运算数是非数值的则运算符会将它转化成数值。

符号位置决定运算结果:

运算数之前,先进行递增或递减操作,在进行求值。

运算数之后,先进行求值,在进行递增或递减操作。

例如:

//前置递增var age = 29;++age;console.log(age); //30//等同于var age = 29;age = age + 1;console.log(age); //30//前置递减和这个类似var age = 29;--age;console.log(age); //28//执行前置递减和递增操作时,变量的值都是在语句被求值以前改变的var age = 29;var anotherAge = --age + 2;console.log(age); //28console.log(anotherAge); 30//由于前置递减和递增操作与执行语句的优先级相等,因此整个语句会从左至右被求值var num1 = 2;var num2 = 20;var num3 = --num1 + num2;var num4 = num1 + num2;console.log(num3); //21console.log(num4); //21//zhou:通俗地说,前置就是先对自己加或减,把自己搞好了再去做其他的//----------------------------------------------------------------------------------------------------//后置递增和递减与前置递增和递减有一个非常重要的区别,即递增和递减操作是在包含它们的语句被求值之后才执行的//这个区别在某些情况下不是什么问题,例如:var age = 29;age++;console.log(age); //30//把递增操作符放在变量后面并不会改变语句的结果,因为递增是这条语句的唯一操作。//但是,当语句中还包含其他操作时,上述区别就会非常明显了,例如:var num1 = 2;var num2 = 20;var num3 = num1-- + num2;var num4 = num1 + num2;console.log(num3); //22console.log(num1); //1console.log(num4); //21//zhou:通俗地说,后置就是先去做其他的,等其他的搞好了,再对自己加或减var num1 = 2;var num2 = 20;var num3 = num1++ + num2;var num4 = num1 + num2;console.log(num3); //22console.log(num1); //3console.log(num4); //23

本篇文章呢,就先讲算术运算符和自增与自减,下一篇文章我们再来说关系运算符对象运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值