- 算數運算子
算數運算子有+、-、*、/、%、++、--、=、類似+=的運算子,其使用方式與程式語言(Java、C++、C#等)基本一樣。給定 y=5,下面的表格解釋了這些算術運算子:
運算子 | 描述 | 例子 | 結果 |
---|---|---|---|
+ | 加 | x=y+2 | x=7 |
- | 減 | x=y-2 | x=3 |
* | 乘 | x=y*2 | x=10 |
/ | 除 | x=y/2 | x=2.5 |
% | 求餘數 (保留整數) | x=y%2 | x=1 |
++ | 累加 | x=++y | x=6 |
-- | 遞減 | x=--y | x=4 |
下面主要演示+運算子(字串連線符):
<script type="text/javascript"> i=5+5; document.write("i的值是:"+i+"<br>");// i="5"+"5"; document.write("i的值是:"+i+"<br>");// i=5+"5"; document.write("i的值是:"+i+"<br>");// </script>
- 位運算子
位運算子主要包括(~(非運算)、&(與運算)、|(或運算)、^(異或運算))。
<script type="text/javascript"> var iNum1 = 25; //25 等於00000000000000000000000000011001 var iNum2 = ~iNum1;// 轉換為11111111111111111111111111100110 document.write(iNum2+"<br>");//輸出 "-26" var iResult = 25 & 3; /*
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
AND = 0000 0000 0000 0000 0000 0000 0000 0001
*/ document.write(iResult+"<br>");//輸出 "1" var iResult = 25 | 3; /*
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
--------------------------------------------
OR = 0000 0000 0000 0000 0000 0000 0001 1011
*/ document.write(iResult+"<br>");//輸出 "27" var iResult = 25 ^ 3; /*
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
XOR = 0000 0000 0000 0000 0000 0000 0001 1010
*/ document.write(iResult+"<br>");//輸出 "26" </script>
- Boolean運算(!(求反運算)、&&(與運算)、||(或運算))
對boolean值進行的運算,與程式語言的運算方式基本一致。
- 關係運算(<、>、<=、>=、==、!=)
<script type="text/javascript"> var bool = 2<1; document.write(bool+"<br>");//輸出false var bool = "a"<"b";//字母 a的字元程式碼是 97,字母b的字元程式碼是 98 document.write(bool+"<br>");//輸出ture var bool = "98"<97;//字串 "98"將被轉換成數字 98 document.write(bool+"<br>");//輸出false var bool = "a"<9999;//這樣比較總是返回false,不管是<、>、<=、>= document.write(bool+"<br>");//輸出false </script>
- 等性運算子(==、===、!=、!==)
下表是一些特殊情況的值:
表示式 |
值 |
表示式 |
值 |
表示式 |
值 |
null==undefined |
true |
“NaN”==NaN |
false |
5==NaN |
false |
NaN==NaN |
false |
NaN!=NaN |
true |
false==0 |
true |
true==1 |
true |
true==2 |
false |
undefined==0 |
false |
null==0 |
fale |
“5”==5 |
true |
|
全等號由三個等號表示(===),只有在無需型別轉換運算數就相等的情況下,才返回 true。
<script type="text/javascript"> var i = "66"; var j = 66; document.write((i == j)+"<br>");//輸出 "true" document.write((i === j)+"<br>");//輸出 "false" document.write((i != j)+"<br>");//輸出 "fale" document.write((i !== j)+"<br>");//輸出 "true" </script>
- 條件運算子
variable = boolean_expression ? true_value : false_value;條件運算子與程式語言的使用方式基本一致。
<script type="text/javascript"> var num1=25,num2=565; var max = (num1>num2) ? num1 : num2;//取最大值 document.write(max+"<br>");//輸出 "true" </script>
- 其他運算子
a. 賦值運算子
每種主要的算術運算以及其他幾個運算都有複合賦值運算子:
- 乘法/賦值(*=)
- 除法/賦值(/=)
- 取模/賦值(%=)
- 加法/賦值(+=)
- 減法/賦值(-=)
- 左移/賦值(<<=)
- 有符號右移/賦值(>>=)
- 無符號右移/賦值(>>>=)
給定 x=10 和 y=5,下面的表格解釋了賦值運算子:
運算子 | 例子 | 等價於 | 結果 |
---|---|---|---|
= | x=y | x=5 | |
+= | x+=y | x=x+y | x=15 |
-= | x-=y | x=x-y | x=5 |
*= | x*=y | x=x*y | x=50 |
/= | x/=y | x=x/y | x=2 |
%= | x%=y | x=x%y | x=0 |
b.逗號運算子
用逗號運算子可以在一條語句中執行多個運算。
例如:var iNum1 = 1, iNum = 2, iNum3 = 3;
c.typeof運算子
typeof 運算子有一個引數,即要檢查的變數或值,對變數或值呼叫 typeof 運算子將返回下列值之一:Undefined:如果變數是 Undefined 型別的;Boolean:如果變數是 Boolean 型別的;Number:如果變數是 Number 型別的;String:如果變數是 String 型別的;Object:如果變數是一種引用型別或 Null 型別的。
<script type="text/javascript"> var temp1="Jackie"; var temp2;//Undefined型別只有一個值,即 undefined。當宣告的變數未初始化時,該變數的預設值是 undefined。 document.write((typeof temp1)+"<br>");//string document.write((typeof temp2)+"<br>");//undefined document.write((typeof 86)+"<br>");//number document.write((typeof null)+"<br>");//object </script> /*Undefined:Undefined型別只有一個值,即 undefined。當宣告的變數未初始化時,該變數的預設值是 undefined。
null:另一種只有一個值的型別是 Null,它只有一個專用值 null,即它的字面量。值 undefined 實際上是從值 null 派生來的,因此 ECMAScript 把它們定義為相等的。alert(null == undefined); //輸出 "true"。
*/
d.delete運算子
delete 運算子刪除對以前定義的物件屬性或方法的引用。例如:
<script type="text/javascript"> var o = new Object; o.name = "Jackie"; document.write(o.name+"<br>"); //輸出 "Jackie" delete o.name; document.write(o.name+"<br>"); //輸出 "undefined" </script>
e. instanceof運算子
能用 instanceof 運算子檢查給定變數指向的物件的型別。例如:
<script type="text/javascript"> function Car()//使用原型方式(或混合的建構函式/原型方式)宣告instanceof才有用
{} var car=new Car(); document.write((car instanceof Car)+"<br>");//輸出 true </script>
使用instanceof 運算子會出現很多意想不到的結果,建議不用。使用原型方式(或混合的建構函式/原型方式)宣告instanceof才有用
注:資料型別轉換
String() 轉換為字串型別
Number() 轉換為數字型別
Boolean() 轉換為布林型別
parseInt:將字串轉換為整數。從字串的開頭開始解析,在第一個非整數的位置停止解析,並返回前面讀到所有的整數。如果字串不是以整數開頭的,將返回NaN。如:parseInt(“150
hi”)返回的值是:150,parseInt("hi")返回的值是:NaN。
parseFloat:將字串轉換為浮點數。 從字串的開頭開始解析,在第一個非整數的位置停止解析,並返回前面讀到所有的整數。如果字串不是以整數開頭的,將返回NaN。如:parseFloat("15.5 hi") 返回的值是:15.5,parseFloat("hi
15.5")返回的值是:NaN。
eval:將字串作為javascript表示式進行計算,並返回執行結果,如果沒有結果則返回undefined。
附上截圖:
- 運算子思維導圖