JS_运算符

今天了解下js中的几类运算符,其实都跟java等语言中的运算符类似,以下挑较重要的几点说明下:

1.+,-,*,/ ,%

js中number类型即为浮点数,所以在 / 运算后,得到的是浮点数;被除数是0,得到的是Infinity/-Infinity,0/0得到NaN.

1 var t1 = 10 / 3;//3.333..
2 var t2 = 10.2 % 5.1;//0
3 var t3 = 10 / 0;//Infinitiy
4 var t4 = 0 / 0;//NaN

2.++,--

对于++i;就是先将i的value+1,然后表达式的值即为i;对于i++,则是i的值+1,但表达式的值为+1之前的值。

1 var t = 10;
2 var j = ++t;//t:11 j:11
3 var i = t++;//t:12 i:11

3.==,=== (!=,!==类似)

首先注意一点,js中的基础数据类型(number,string,bollean),是按值比较的;而object类型(objects,arrays,functions)是按引用进行比较的

1>对于===(identical)的评判标准:

①比较的双方数据类型不一致:false

②双方为primitive类型,且其value一致(string类型的比较是逐字符的):true  注意:NaN不与任何类型identical,甚至自己,判断值是否为NaN,用isNaN()

③如果类型为object,array,function,双方的引用相同,则true;反之,引用不同,即使含值相同,false;

④两个null 或 两个undefined比较:true

2>对于==(equal)的评判标准:

①比较双方的值为null 和 undefined:true

②number与string比较:将string 转换成 number,再做比较

③比较的一方如果为true(false),将其转换成1(0),再做比较

④如果一方为object,另一方为string、number,将object转换成对应类型,再做比较(先调用其valueOf()方法,在调用toString()方法,转换成primitive类型,再做比较)

 1 var s1 = "hello world";
 2 var s2 = "HELLO world";
 3 alert(s1 == s2);//false(js是区分大小写的)
 4 s2 = s2.toLowerCase();
 5 alert(s1 === s2);//true
 6 
 7 var o = { name: "zhangsan", age: 21, married: true };
 8 var o1 = o;
 9 alert(o === o1);//true
10 
11 var array = new Array(1, "yes", true, {});
12 var array1 = new Array(1, "yes", true, {}); //array===array1 :false
13 var array1 = array;
14 array === array1;//true
15 
16 if (null == undefined) {
17     alert("yes,null is equal to undefined");
18 }
19 if (true=="1") {
20     alert("true is converted to 1,'1' is converted to 1,and 1 equal to 1");
21 }

4.in

in操作符要求其左侧操作数为stirng,右侧为object或array,该操作判断左侧的string是否为右侧对象的属性名称

1 var obj = { name: "lisi", age: 22, married: false };
2 alert("name" in obj);//true
3 alert("test" in obj);//false
4 alert("toString" in obj);//true 继承的默认属性

5.instanceof

该操作符要求左侧为object,右侧为定义对象的结构名称(构造函数名称),

1 var d = new Date();
2 d instanceof Date;//true
3 d instanceof Object;//true :all objects are instance of Object
4 d instanceof Number;//fales
5 
6 var a = [1, 2, 4, "yes"];
7 a instanceof Array;//true
8 a instanceof Object;//true
9 a instanceof RegExp;//false

恩,就是这样,如果觉得有所收获,记得点个赞喔~

原文地址:https://www.cnblogs.com/baweier2013/p/5118901.html