JavaScript之操作符
2019-08-14 10:30:13来源:博客园 阅读 ()
写在前面:计算机被发明的初衷仅仅是为了快速实现一些数学计算,然而经过多年发展,计算机已经不单单能实现快速计算这么简单的工作了,现代计算机不仅能够进行数值的计算,还能进行逻辑计算,还具备存储记忆功能,是能够按照程序运行,自动、高速处理海量数据的现代智能电子设备,俨然已经成了我们生活的必需品。有兴趣的同学可以去北大公开课听一听《计算概论A》的前几节课。
即使计算机已经发展至此,但它工作的本质还是计算。然而计算就必然涉及到运算符,这就引出了我们今天的主题,JavaScript中的操作符。
一 JavaScript中的算术运算符
和数学运算一样,JS中也包括+(加)、-(减)、*(乘)、/(除)、%(模,即取余)。
唯一不同的是=(等号),在数学中是表示两个相等的一种关系判断符号,而在JS中,它表示赋值运算,可以认为它的功能是把左边变量的值设置为右边提供的值(也可以是表达式计算后的值)。
赋值运算的表达式是:变量 = 值/表达式。
而JS中的等于符号是“==”和“===”,稍后将详细说明他们的区别。
另外,JS中数字的表达是有范围的,5e-324 ----- 1.7976931348623157e+308之间。可以使用Number.MIN_VALUE和Number.MAX_VALUE查看。超出这个范围将显示-infinity或infinity。
1、+(加)
a: 如果操作数都是数值,则执行数学运算
b:如果任意一个操作数是NaN,则返回NaN
c:infinity + infinity = infinity
d:(-infinity) + (-infinity) = -infinity
e:infinity + (-infinity) = NaN
f:如果有任意一个操作数是字符串,则先把另一个转换成字符串,然后拼接
2、-(减)
a: 如果操作数都是数值,则执行数学运算
b:如果任意一个操作数是NaN,则返回NaN
c:infinity - infinity = NaN
d:(-infinity) - (-infinity) = NaN
e:infinity - (-infinity) = infinity
f:-infinity - infinity = -infinity
3、*(乘)
a:如果操作数都是数值,则执行数学运算
b:如果任意一个操作数是NaN,则返回NaN
c:infinity * 0 = NaN
d: infinity乘以任何非零操作数,都返回infinity,正负取决于非零操作数的正负
e:infinity * infinity = infinity
f:如果操作数不是数字,那么JS会先把它转换成数字,然后再应用上面的规则
4、/(除)
a: 如果操作数都是数值,则执行数学运算
b:如果任意一个操作数是NaN,则返回NaN
c:infinity / infinity = NaN
d: 0 / 0 = NaN
e:任何非0的有限数除以0,都返回infinity,正负取决于非零操作数的正负
f: 0除以任何数都等于0
g:任何有限数除以infinity都返回0
h:如果操作数不是数字,那么JS会先把它转换成数字,然后再应用上面的规则
5、%(模)
a:如果操作数都是数值,则执行数学运算
b:如果任意一个操作数是NaN,则返回NaN
c:如果被除数是infinity,则返回NaN(另一个操作数是有限数)
d:如果除数是infinity,则返回被除数(另一个操作数是有限数)
e: 0除以任何数都余0
f:如果操作数不是数字,那么JS会先把它转换成数字,然后再应用上面的规则
详细情况可以参考《JavaScript高级程序设计(第三版)》的运算符章节。
二 JavaScript的复合运算
1、+=
a += 1 等同于 a = a + 1
2、-=
a -= 1 等同于 a = a – 1
3、*=
a *= 1 等同于 a = a * 1
4、/=
a /= 1 等同于 a = a / 1
5、%=
a %= 1 等同于 a = a % 1
6、++
a++ 等同于 a = a + 1
7、--
a— 等同于 a = a – 1
需要注意的是:自增(++)和自减(--)出现的位置决定了变量是先取值,还是先计算。
符号出现在变量之前,则先计算,之后则先取值。
1 var a = 0; 2 console.log(a++);//0 3 console.log(++a)//2
三 JavaScript的比较运算(关系运算)
1、>(大于)
2、<(小于)
3、>=(大于或等于)
4、<=(小于或等于)
5、==(等于)不关注数据类型,比较值前会进行类型转换,保证数据类型统一
6、===(绝对等于)数据类型和值都相等才成立
注意:连续比较运算时,从左往右依次比较。(这里涉及到隐式类型转换,每次比较会得到true或者false,调用Number(),再和下一个数字比较)最后返回true或false。
1 var a = 1; 2 console.log(0 < a < 2);//true 3 console.log(0 < a == 1);//true 4 console.log(0 > a < 1);//true
关于数据类型的转换,会专门用一节来讲解。
比较运算的规则如下:
a:都是数字,正常比较
b:都是字符串,比较字符串编码值
c:若果一个是数字,则另一个江北转换为数字在比较
d:如果一个是布尔值,则会先转换成数字再比较
e:如果一个是对象,则先调用它的valueOf()方法,得到返回值再应用上面的规则。如果对象没有此方法,则调用toString()方法。
这两个方法将在以后介绍对象是详细讲解。
四 JavaScript的逻辑运算和三目运算
1、逻辑运算
a:逻辑与(&&),有一个条件为假则为假
1 var num = parseInt(prompt("please enter a number:")); 2 if(num >= 0 && num <=10){ 3 alert("yes,this number is between 0 and 10."); 4 } 5 //只有当数字既瞒足“num >= 0”又满足“num <= 10”时才会弹出提示框
b:逻辑或(||),有一个条件为真则为真
1 var num = parseInt(prompt("please enter a number:")); 2 if(num < 0 || num >10){ 3 alert("yes,this number is not between 0 and 10."); 4 } 5 //只要num满足其中一个条件就会弹出提示框了
c:逻辑非(!),取反
1 var myBoolean = true; 2 console.log(!myBoolean);//false 3 4 //用逻辑非可以判断某个东西是否存在,比如某对象的属性。 5 6 var myObj = { 7 name:"ren", 8 age:"12" 9 }; 10 console.log(myObj);//{name: "ren", age: "12"} 11 if(!myObj.sex){ 12 myObj.sex = "male"; 13 } 14 console.lof(myObj);//{name: "ren", age: "12", sex: "male"} 15 //可以看到,第二次打印是多了一个sex属性,它的值为male
2、三目运算
表达式1?表达式2:表达式3;
判断表达式1是否为真,若是则返回表达式2,否则返回表达式3
1 var num = parseInt(prompt("please enter a number:")); 2 if(num == 0){ 3 alert("this number is 0."); 4 }else{ 5 num < 0?alert("this is a negative number."):alert("this is a positive bumber"); 6 } 7 //当输入数字小于0时会弹出“this is a negative number.”,大于0时会弹出“this is a positive bumber”
另外JavaScript也提供了位运算符,但个人觉得工作中用的不多,至少我到现在还没用过,所以这里就不列出来了,有兴趣的同学也可以自行上网查阅,推荐MDN和《高程》。
下一次将专门讲解JavaScript中的数据类型转换,包括隐式转换和显式转换。
原文链接:https://www.cnblogs.com/ruhaoren/p/11325934.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- javascript面向对象入门基础详细介绍 2020-03-29
- JavaScript函数表达式详解及实例 2020-03-25
- 如何用javascript连接access数据库 2020-03-20
- js中去掉字串左右空格 2020-03-20
- Javascript中的经典技巧 2020-03-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash