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
恩,就是這樣,如果覺得有所收獲,記得點個贊喔~
總結
- 上一篇: Canonical 公司预计最晚明年 4
- 下一篇: 行列式的六条运算法则整理