今天了解下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
恩,就是这样,如果觉得有所收获,记得点个赞喔~