9 walker studio-9w個人設計工作室
Google
.網頁設計接案業務
.加入GForce手機娛樂聯盟

.基礎HTML教學
.CSS樣式表教學
.基礎JAVASCRIPT教學
.JAVASCRIPT收集
.自製ASP程式下載
.色彩英文名對照
.16進位色碼對照一
.16進位色碼對照二
.可愛包子動畫圖庫
.MSN表情小圖示下載
.9W2U-1024X768桌布下載

.GForce付費手機遊戲
.免費遊戲房
.免費線上遊戲房
.免費檔案報報
.免費資源報報
.網站漫遊報報
.多國語言字母發音表

因網友留言內容
含成人色情內容
討論區即時停止運作
不便之處敬請見諒
● LOGO交換登錄
● 和我們連絡

 友站及其它連結
刑事警察局網際網路資訊站
591租屋網站
反毒害大聯盟
台灣認養地圖
KTzone日記, 論壇
::S.H.E 青春組織國際後援會::
基礎JAVASCRIPT教學
01 JavaScript 簡介 06 JavaScript的函數
02 如何開始編寫JavaScript 07 JavaScript的事件
03 變數、資料型態及陣列 08 JavaScript的流程控制
04 JavaScript的物件、方法與屬性 09 常用的視窗 (Window)物件
05 JavaScript的運算子  

05、JavaScript的運算子

運算子 (Operator) :
運算子有以下幾種類:

.算術運算子 (Arithmetic Operators)
.字串運算子 (String Operators)
.邏輯運元 (Logical Operators)
.位元運算子 (Bitwise Operators)
.指定運算子 (Assignment Operators)
.比較運算子 (Comparison Operators)
.特別運算子 (Special Operators)

1.算術運算子 (Arithmetic Operators)
用來做一些與數目有關的工作。 例如加、減、乘和除法。

為了讓大家清楚JavaScript的物件架構,在這一部份課程會針對以下圖片來說明物件:

運算子 例子 說明
+ var1 = var2 + var3 var2var3 的內容相加, 然後將值放到 var1
++ var1++ (遞增運算元)即是 var1 = var1 + 1
- var1 = var2 - var3 var2 減去 var3 的結果放到 var1
-- var1-- (遞減運算元)即是 var1 = var1 - 1
* var1 = var2 * var3 var2var3 的內容相乘, 然後放到 var1
/ var1 = var2 / var3 var2 除以 var3 的結果放到 var1
% var1 = var2 % var3 var2 除以 var3 的餘數放到 var1

increment operator (遞增運算元) 是將一個變數加一,多用於迴圈的計次,例如 i++ , i++ 也可寫成 ++i 或 i=i+1。

decrement operator (遞減運算元) 是將一個變數減一,例如 i-- ,也可寫成 --i 或 i = i - 1

程式範例(算術運算子): 看程式samp05.html執行結果

<script>
var a = 1;
var b = 2;
var c = 3;
var d = 4;
var e = a + b + d + c;
document.write("<br>a = " + a);
document.write("<br>b = " + b);
document.write("<br>c = " + c);
document.write("<br>d = " + d);
document.write("<br><br> a + b + d + c = " + e);
document.write("<br> 在d++之前, d的值 = " + d );
d++; //即是 d = d + 1
document.write("<br> 在d++之後, d的值 = " + d );
var r = 5 % 2; //將 5 除以 2 的餘數放到 r
document.write("<br>5除於2的餘數 = " + r );
var x = a * b * c; //將a、b、 c 的乘積放到 x
document.write("<br>a、b、 c 的乘積 = " + x );
</script>

各算術運算子在處理上的優先次序 (precedence) 是依一般算術規則:先乘除、後加減,若有一些運算要優先處理,可放在 ( ) 內,例如:

 1 + 2 * 3 = 7
 ( 1 + 2 ) * 3 = 9

2.字串運算子 (String Operators)

用來做一些與字串有關的工作。例如將兩個字串連接,得出一個更長的字串。

運算子 例子 說明
+ a = "abc" + "1234" 將 "abc" 和 "1234" 兩個字串連接,再放到 a
+= a += "1234" 即是 a = a + "1234"
因為字串和數目型態都可以用 + 和 += 運算,所以如果不留意變數的型態就很容易出錯。

程式範例(字串運算子 ): 看程式samp06.html執行結果

<script>
var a = "Java";
var b = "Script";
var c = "誕生於:";
var year1 = 19;
var year2 = 95;
document.write(a + b + " " + c + " 西元 " + year1 + year2 + " 年");

var year3 = year1 + year2;
//想使用字串運算,但因宣告year1及year2時為數值型態
//實際上做的是是數值運算,因而發生錯誤
document.write("<br>想使用字串運算卻發生數值型態錯誤:");
document.write("<br>" + a + b + " " + c + " 西元 " + year3 + " 年");
</script>

例子說明:

document.write(a + b + " " + c + " 西元 " + year1 + year2 + " 年");
因為這條運算式有字串型態的資料, 所以 JavaScript 就把它當作字串運算, 雖然 year1 和 year2 分別是 19 和 95 數值型態,但也被當作是 "19" 和 "95" ,所以相加後的結果就是 "1995" 了。

var year3 = year1 + year2;
因為這條運算式沒有字串型態的資料,所以 JavaScript 就把它當作算術運算,year3 = year1 + year2 = 19 + 95 = 114

3.邏輯運算元 (Logical Operators)
通常是做一些有關布林型態的運算。 傳回的值可以是 true 或 false , 如果有算式未被定義, 就會傳回 null 。

&&(AND)
兩邊的值假如都是 true 的話則傳回 true ,否則傳回 false。例如: 1<2 && 5>2 → 傳回 true 。
||(OR)
兩邊的值假如其一是 true 的話則傳回 true ,否則傳回 false。例如: 1<2 || 5<2 → 傳回 true 。
!(NOT)
值假如是 true 則傳回 false 。

程式範例(邏輯運算元 ): 看程式samp07.html執行結果
判斷是否有參加高考資格,假設參加高考的要求是語言科目合格,或者年滿 21 歲。

<script>
var chinese_pass = true;
var english_pass = false;
var over21 = true;

// Chinese 及 English 科目皆及格
var lang_pass = chinese_pass && english_pass

/* requirement to sit in alevel:
語言科目及格或年滿21
*/
var alevel = lang_pass || over21
document.write("是否有參加資格? " + alevel);
</script>

例子說明:
例子中所有變數都是布林型態,參加者年滿 21 歲 ,經運算後 alevel 就是 true 。

4.位元運算子 (Bitwise Operators)
用來做二進制的位元運算。因為位元運算可以說是低階 (Low-level)工作,所以運算得較快,而且有些位元運算子可以做算術運算,例如乘以 2 的倍數或除以 2 的倍數。

下表用了兩個整數 a 和 b 為例子,假設 a = 12 , b = 10,它們的二進制表示方式分別是 a = 00001100b , b = 00001010b ,數字後面的 b 字代表該數字是二進制。

運算子 例子 二進制運算 說明
&
a & b
a    = 00001100b = 12
b    = 00001010b = 10
a & b = 00001000b = 8
AND
如果兩個位元都是 1 ,結果就是 1 ,否則是 0
|
a | b
a    = 00001100b = 12
b    = 00001010b = 10
a | b = 00001110b = 14
OR
如果任何一個位元是 1 ,結果就是 1 ,否則是 0
^
a ^ b
a    = 00001100b = 12
b    = 00001010b = 10
a ^ b = 00000110b = 6
XOR
如果位元不相同,結果是 1 ,否則是 0
~
~a
a = 00001100b = 12
~a = 11110011b = -13
NOT
將所有位元的 0 變成 1,1 變成 0。
註: a 是用了 Two's Complement 表示方式
<<
a << 2
a      = 00001100b = 12
a << 2 = 00110000b = 48
左移 (Left Shift)
將 a 的所有位元向左移兩個位,右邊的位元補入 0。
>>
c >> 2
c
= 負 (2 的 30 次方)
= -1073741824

c >> 2
= 負 2 的 28 次方
= - 268435456
有極右移 (Sign-propagating right shift)
將 c 的所有位元向右移兩個位,最左邊的位元補入極性位元 (Sign Bit) , 即是保持它的極性
>>>
c >>> 2
c
= 負 (2 的 30 次方)
= -1073741824
c >>> 2
= 805306368
= 2 的 29 次方 + 2 的 28 次方
補零右移 (Zero-Fill Right Shift)
將 c 的所有位元向右移兩個位,左邊的位元補入 0

程式範例(位元運算子 ): 看程式samp08.html執行結果
用 << 做乘以 2 的倍數運算, 用 >> 做除以 2 的倍數運算。

<script>
var a = 3;
a = a << 3; //將a乘以2的3次方
document.write("3 * 8 = " + a);
// now, a = 24
a = a >> 2; //將a除以2的2次方
document.write("<br>24 / 4 = " + a);
</script>
例子說明:
<< 可以做乘以 2 的倍數運算, 以下例如可將 a 乘以 2 的 n 次方:
 a = a << n

>> 可以做除以 2 的倍數運算, 以下例如可將 a 除以 2 的 n 次方:
 a = a >> n

5.指定運算子 (Assignment Operators)
將運算後的結果放到某個變數,最常用的就是等號 (=),還有,指定運算子可以令算式簡單一點。

運算子 例子 意思
=
var1 = var2 var1 的內容等於 var2 的內容
+=
var1 += var2 var1 = var1 + var2
-=
var1 -= var2 var1 = var1 - var2
*=
var1 *= var2 var1 = var1 * var2
/=
var1 /= var2 var1 = var1 / var2
%=
var1 %= var2 var1 = var1 % var2
&=
var1 &= var2 var1 = var1 & var2
^=
var1 ^= var2 var1 = var1 ^ var2
|=
var1 |= var2 var1 = var1 | var2
<<=
var1 <<= var2 var1 = var1 << var2
>>=
var1 >>= var2 var1 = var1 >> var2
>>>=
var1 >>>= var2 var1 = var1 >>> var2

程式範例(指定運算子 ): 看程式samp09.html執行結果
用 ^ (XOR) 運算子交換兩個整數型態變數的內容。

<script>
var a = 135;
var b = 246;
document.write("<br>交換前, ");
document.write("a = " + a + ", b = " +b);
a ^= b ; b ^= a ; a ^= b ;
document.write("<br>交換後, ");
document.write("a = " + a + ", b = " +b);
</script>

6.比較運算子 (Comparison Operators)
用來比較多兩個算式的關係,例如一個算式是否等於另一個算式。比較後傳回的結果是 true 或 false 其中一個值。

運算子 例子 說明
==
expr1 == expr2 如果 expr1 等於 expr2 , 就傳回 true
!=
expr1 != expr2 如果 expr1 不等於 expr2 , 就傳回 true
>
expr1 > expr2 如果 expr1 大於 expr2 , 就傳回 true
>=
expr1 >= expr2 如果 expr1 大於或等於 expr2 , 就傳回 true
<
expr1 < expr2 如果 expr1 小於 expr2 , 就傳回 true
<=
expr1 <= expr2 如果 expr1 小於或等於 expr2 , 就傳回 true

程式範例(應用比較運算元 ): 看程式samp10.html執行結果

<script>
var a = 3;
var b = 4;
document.write("a = " + a + " , b = " + b);
var result;
result = a == b;
document.write("<br>a 等於 b ? " + result);
result = a != b;
document.write("<br>a 不等於 b ? " + result);
result = a > b;
document.write("<br>a 大於 b ? " + result);
result = a >= b;
document.write("<br>a 大於或等於 b ? " + result);
result = a < b;
document.write("<br>a 小於 b ? " + result);
result = a <= b;
document.write("<br>a 大於或小於 b ? " + result);
</script>

7.特別運算子 (Special Operators)
用來做特別或較複雜的運算。

運算子 例子 說明
? :
condition ? expr1 : expr2 如果 condition 是 true, 就傳回 expr1 的結果, 否則傳回 expr2 的結果。

程式範例(特別運算元 ): 看程式samp11.html執行結果

<script>
var sex1 = "m";
var sex2 = "f";
var sex_full1;
sex_full1 = (sex1 == "m") ? "男性" : "女性";
var sex_full2;
sex_full2 = (sex2 == "m") ? "男性" : "女性";
document.write("m = " + sex_full1);
document.write("<br>f = " + sex_full2);
</script>


參考網站:
JavaScript Variables JavaScript KitJavaScript Source Introduction to JavaScript, NTUPT JavaScript Objects
網頁寫作記事本JavaScript 程式設計與應用:用戶端
因想再仔細的研究及學習JAVASCRIPT,因而在學習之餘,參考各網路先進網頁,編寫了基礎JAVASCRIPT教學區,也讓有需要學習JAVASCRIPT語法的網友多一個可參考的地方,若有不正確的資訊,尚望請各位先進們海涵與指正。


本站內容屬私人所有 請勿任易轉載 如須轉載 請通知本站
本站所鏈結標題及鍊結內容 皆歸原權利人所有
網站內容如有任何侵權 亦請通知本站刪除 謝謝!

Power by 9 Walker Studio
本站內容屬私人所有 請勿任易轉載 如須轉載請通知本站