欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript之操作符

程序员文章站 2023-11-15 15:53:46
写在前面:计算机被发明的初衷仅仅是为了快速实现一些数学计算,然而经过多年发展,计算机已经不单单能实现快速计算这么简单的工作了,现代计算机不仅能够进行数值的计算,还能进行逻辑计算,还具备存储记忆功能,是能够按照程序运行,自动、高速处理海量数据的现代智能电子设备,俨然已经成了我们生活的必需品。有兴趣的同 ......

  写在前面:计算机被发明的初衷仅仅是为了快速实现一些数学计算,然而经过多年发展,计算机已经不单单能实现快速计算这么简单的工作了,现代计算机不仅能够进行数值的计算,还能进行逻辑计算,还具备存储记忆功能,是能够按照程序运行,自动、高速处理海量数据的现代智能电子设备,俨然已经成了我们生活的必需品。有兴趣的同学可以去北大公开课听一听《计算概论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、===(绝对等于)数据类型和值都相等才成立

  注意:比较运算不能连用,比如0 < num < 10 会报语法错误。

  关于数据类型的转换,会专门用一节来讲解。

  比较运算的规则如下:

           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中的数据类型转换,包括隐式转换和显式转换。