第二篇:簡單介紹JavaScript內建物件

  1. String物件
  2. Array物件
  3. Date物件
  4. Math物件
  5. Error物件
  6. Common物件

建議使用右下方Popout按鍵來「全螢幕」觀看。


History

2010/5/7,整理為xmind;
2010/11/30,整理為Text。

String物件

HTML標籤的格式編排


Tag

說明

anchor()

傳回<a>string</a>標籤字串

big()

傳回<big>string</big>標籤字串

blink()

傳回<blink>string</blink>標籤字串(I.E不會閃)

bold()

傳回<b>string</b>標籤字串

fixed()

傳回<tt>string</tt>標籤字串

fontcolor(color)

傳回<font color="color">string</font>標籤字串

fontsize(size)

傳回<font size="size">string</font>標籤字串

italics()

傳回<i>string</i>標籤字串

link(url)

傳回<a href="url">string</a>標籤字串

small()

傳回<small>string</small>標籤字串

strike()

傳回<strike>string</strike>標籤字串

sub()

傳回<sub>string</sub>標籤字串

sup()

傳回<sup>string</sup>標籤字串

字串長度與大小寫


length

取得字串的長度

toLowerCase()

將字串的英文字母都轉換成小寫字母

toUpperCase()

將字串的英文字母都轉換成大寫字母

取得字串的指定字元


charAt(index)

取得參數index位置的字元,索引值是以0開始

charCodeAt(index)

取得參數index位置的Unicode統一字碼

子字串的搜尋


indexOf(string, index)

傳回第一次搜尋到字串的索引位置,如果沒有找到傳回-1,傳入的參數為搜尋的字串,index為開始搜尋的索引位置,如無index參數,則預設index=0

lastIndexOf(string)

如同indexOf()方法,不過是從尾搜尋到頭的反向搜尋

match(string)

如同indexOf()和lastIndexOf(),不過傳回的為找到的字串,如果沒有找到傳回null

search(string)

與indexOf()的功能相似

子字串的處理


replace(string1, string2)

將找到的string1子字串取代成為string2

split(string)

傳回Array物件,使用參數string作為分割的字串,將字串轉換成一個Array物件

substr(index, length)

從index開始取出length個字元

slice(index1,index2)

取出index1到index2間的子字串

substring(index1, index2)

取出index1到index2間的子字串

concat(string)

將string字串新增到String()物件的字串後
slice與substring差別在負數處理不同
slice將負數當成從字串尾往前計數

var sWord = "1234567890"
            document.write(slice(2,-3));
            //第一個index(2)會從3開始
            //第二個index(-3)會從從尾到數三個後的下一個開始取值
            //Ans: 34567
   
用白話來講就是:從index2開始取,取到數第三個為止


substring則直接忽略負數,當成0來處理


substring(2,-3) = substring(2,0) = substring(0,2)
            

字串轉換為數值


parseInt(str,進位數)

將字串轉換為整數,parseInt("010")會得到8, parseInt("010", 10)才會得到10,強烈建議進位數一定要設定

parseFloat()

將字串轉換為浮點數

Array物件

Array宣告


var team = new Array(9);

宣告一個0~9共10個的Array,team[0], team[1]…

var team = new Array();

宣告一個空Array,可任意新增值到Array中,例team[20] = 'Bruce';即會產生team[0~19]的空Array,team[20]為指定值

var team = new Array('Bruce', 'Sherry', 'Daniel');

直接帶值宣告team[0],team[1],team[2]三個Array

var team = ['Bruce','Sherry','Daniel'];

透過[]符號直接宣告Array及值

Array物件的屬性和方法


length

屬性,取得陣列的元素個數,也就是陣列的尺寸

join()

將陣列的元素使用字串方式顯示,每個陣列元素使用「,」符號分隔,可指定使用的分隔符號,a.join('-->')

reverse()

將陣列的元素反轉,本來是陣列的最後一個元素成為第一個元素

sort()

將陣列所有元素進行排序

concat(array)

將參數的陣列合併到目前的陣列中,
var a = [1,2,3,4,5], b = [6,7,8,9,0];
                    document.write(a.concat(b).join());
     

push()

由push()與pop()來寶現堆疊(stack),stack.push('a');將a字串放入stack陣列

pop()

先進後出,由最後一個Index來取出Array,例如,push()進去a,b,c三個值,那pop會由c,b,a順序取出

自訂陣列排序方式

排序行為可由比較函式(comparison function)來決定

function compare(x,y){
            return x-y;
            }
            a.sort(compare(x,y));
   

a.sort(function(x,y){x-y});
            
compare回傳值
  • <0,x排序於y前
  • 0,不排序
  • >0,y排序於x前

Date物件

ECMAScript把日期儲存離UTC時間1970年1月1日0點的毫秒數

取得日期和時間


getDate()

傳回日期值1~31

getDay()

傳回星期值0~6,也就是星期日到星期六

getMonth()

傳回月份值0~11,也就是一到十二月,一般都會取值再加1才是我們看的數字

getFullYear()

傳回完整的年份,例如:2012

getYear()

傳回年份,如果在1900~1999年間,傳回後兩碼,例如:1998年傳回98,否則傳回完整的年份

getHours()

傳回小時0~23

getMinutes()

傳回分鐘0~59

getSeconds()

傳回秒數0~59

getMilliseconds()

傳回千分之一秒為單位的秒數,0~999

getTime()

傳回自1/1/1970年開始的秒數,以千分之一秒為單位

設定日期和時間

這些設定的方法並不會修改電腦的時間和日期,只是設定Data物件記錄的時間和日期。

setDate()

設定Date物件的日期1~31

setMonth()

設定Date物件的月份0~11

setFullYear()

設定Date物件的完整年份

setYear()

設定Date物件的年份,在1900~1999間只需使用後兩位,否則需要使用完整的年份

setHours()

設定Date物件的小時0~23

setMinutes()

設定Date物件的分鐘0~59

setSeconds()

設定Date物件的秒數0~59

setMilliseconds()

設定Date物件的秒數,以千分之一秒為單位,0~999

setTime()

設定Date物件的時間,自1/1/1970年開始,以千分之一秒為單位

日期和時間的轉換


getTimezoneOffset()

傳回本地時間和GMT的時間差,以分為單位

toGMTString()

傳回轉換成GMT時間的字串

toLocalString()

傳回將GMT轉換成本地時間的字串

parse(Date)

傳回參數Date物件從1/1/1970到本地時間的毫秒數,以千分之一秒為單位

UTC(Date)

傳回參數Date物件從1/1/1970到GMT時間的毫秒數,以千分之一秒為單位

Math物件

屬性


E

自然數e=2.718281828459045

LN2

ln2=0.6931471805599453

LN10

ln10=2.302585092994046

LOG2E

log2e=1.4426950408889633

LOG10E

loge=0.4342944819032518

PI

圓周率=3.141592653589793

SQRT1_2

根號1/2=0.7071067811865476

SQRT2

根號2=1.4142135623730951

亂數、最大值、最小值


max(value1,value2)

傳回參數中的最大值,參數無限制

min(value1,value2)

傳回參數中的最小值,參數無限制

random()

傳回擬亂數值

round(value)

將參數值四捨五入後傳回

數學方法


abs()

傳回絕對值

acos()

反餘弦函數

asin()

反正弦函數

atan()

反正切函數

atan2(y,x)

反回原點和座標(x,y)的連線,與x正軸的夾角

ceil()

傳回大於或等於參數的最小整數

cos()

餘弦函數

exp()

自然數的指數ex

floor()

傳回大於或等於參數的最大整數

log()

自然對數

pow()

次方

sin()

正弦函數

sqrt()

傳回參數的平方根

tan()

正切函數

Error物件


number

錯誤碼,這是一個32-bit的值,其中後16-bit才是真正的錯誤碼(IE)

message

錯誤說明的字串

description

如同message屬性,這也是錯誤說明的字串(IE)
單層除錯

try{
         // javascript需要錯誤測試的程式碼
        }
        catch(e){
         //錯誤處理
        var errMessage = '';
        for (var i in e)
         errMessage += i + ":" + e[i] + "\n";
         console.log(errMessage);
        }
        finally{
         //不論錯誤是否產生,都會執行此區塊
        }
 
多層除錯

try {
         ...
         try { //第二層
          ...
   }
         catch(e){
          ...
         throw e; //丟出錯誤
    ...
         }
        }
        catch(e) {
         ... //第一層錯誤
        }
        finally {
         ...
        }
 

onerror事件

當頁面出現JavaScript錯誤,會觸發window.onerror事件

window.onerror = function(){
        //使用Firebug收集Log
        console.log("Error!");
        }
        
 
onerror事件提供三個參數

  1. 參數一:傳入錯誤訊息

  2. 參數二:傳入錯誤的URL

  3. 參數三:傳入錯誤的行號
window.onerror = function(message, url, line){
         //使用Firebug收集Log
         console.log("Error:\n %s \nURL: %s \n行號: %s", message, url, line);
         return true; //取消系統事件
        }
 
console.log為Firebug Console API用法。

共用屬性與方法

共用屬性


constructor

javascript物件的constructor屬性,可以取得建立物件副本使用的建構函數名稱(除Global和Math都支援)
檢查物件的建構函數是否為String()
var test = new String();
    if (test.constructor == String){
     ......
    }
    

toString()


toString()

傳回物件的內容,傳回值為字串,object.toString();

toString回傳值


Array

將陣列元素轉換成「,」符號分隔的字串

Boolean

true傳回字串"true",false傳回字串"false"

Date

傳回日期和時間的字串

Error

傳回錯誤息訊的字串

Function

傳回字串格式"function name() {...}",其中name為呼叫toString方法的函數名稱

Number

傳回數字字串。數值轉字串,同時進制轉換:


var a=15;


a.toString(8); //8代表8進制


a.toString(16); //16代表16進制



String

傳回String物件的內容

valueOf()

傳回物件值(Math,Error不支援);
object.valueOf();

valueOf()回傳值


Array

將陣列元素轉換成以「,」符號分隔的字串,如同Array.toString和Array.join方法

Boolean

傳回布林值

Date

傳回前晚到現在的秒數,以千分之一秒為單位

Function

傳回函數的本身

Number

傳回數字

Object

傳回物件本身

String

傳回字串

免費可在Windows Vsita / 7上使用的RamDisk -- Dataram RAMDisk

在記憶體不斷成長,價錢又不斷下降之下,在Windows XP或Linux等32 bit作業系統開始出現一個問題,當你安裝了4 GB以上的記憶體,最多也只能使用到3 GB,這是受限於32 bit作業系統本身,除非升級至64 bit作業系統,不然算是無解的問題。

後來人們發現,在平時的電腦裡,我們根本用不到那怎多的記憶體,或,我有沒有可能把那「不見的1 GB Ram」拿出來用?這時候就有Clever的人,想出了Ram Disk的概念,即我們那些用不到的Ram拿來建成Disk,因為這個Disk是由Ram所建立,所以速度上當然「快很多,非常多,超級多」。

Ram Disk 作用一

也由於是在Ram裡面運作,所以也可以有效減少HDD的讀寫動作,進而有效保護HDD,例如,我們使用P2P在下載資料,但P2P的下載動作是含「超大量」的讀寫動作,對HDD而言只能用一個字「操」來形容。所以我們就可以把P2P下載的Temp目錄設定到Ram Disk裡,完成目錄再設定到HDD中,讓HDD只單純做一次性讀寫。

Ram Disk 作用二

另外有人發現,Ram Disk很合適拿來放「暫時性」資料,因為Ram裡的資料,在關機時就會消失不見,完全不會佔到HDD任何一滴滴空間,例如:Browser的暫存資料。

Ram Disk 作用三

在文書作業上,Ram Disk也可以有很大的幫忙,如果你需要常開些大檔案來作業,例如,Word、PowerPoint…等都是圖檔的大型檔案,或影片檔,就合適先Copy到RamDisk再來開啟作業,原因我們上面說過了,HDD與RamDisk的速度,就跟龜兔賽跑的差別差不多,一個在天一個在地,所以透過Ram Disk的幫忙,讓我們進行大檔案文書工作時,可以更加流暢。但請記得,要把修改好的內容Copy回去HDD,這也是為什麼最後是「龜」贏而不是「兔」贏。

以上談了那怎多,那最重要的Ram Disk呢?說到RamDisk且免費的,在Vista之前,大概都是Gavotte RAMDisk的天下,但在Windows XP之後,Gavotte RAMDisk就沒再開發下去,所以在Vista或Vista之後的64 bit作業系統,除非你花錢,或找得到「快樂版」。

近來終於發現了一個新又免費的Ram Disk程式,Dataram RAMDisk, 此免費版本只有一個限制,就是最大只能建立4 GB的Ram Disk,就算是付費無限制版本,也才9.99美元。免費版對我們而言已經是非常足夠。

我下載的是「Dataram_RAMDisk_V3.5.130RC16」版本,

Dataram  RAMDisk Download

Dataram RAMDisk不只是Windows Vista、Windows 7,就連Server 2003、Server 2008都一樣支援,這會不會太佛心了!讓我們感謝作者一下。謝謝你。(如果你有找過或看過其他付費RadDisk,你就會知道為何要謝謝他了。)

安裝時,最好先按右鍵,使用「系統管理員」的權限來安裝( 我在Windows 7 32 bit並不需要,應該是64 bit的才需要)。

程式設定畫面

Disk Size是你要建立的Ram Disk大小,格式建議使用「FAT32 Partition」,Boot Sector Settings也建議使用「Windows boot sector」,確認好之後按下「Start RAMDisk」就會開始建立RamDisk及Format,依大小會待不一的時間。

工作管理員之記憶體使用情況

完成後,你會發現,你電腦的記憶體使用數量,馬上上升1 GB,這就是傳說中,把Windows作業系統不見的1 GB找回來的方法,或是說讓Windows 32bit作業系統可以使用4 GB以上的方法

RamDisk

如果你記憶體夠,建議可以建個2 GB的RamDisk,然後使用ReadyBoost,這會讓你的開機速度再加速提升。再來就可以把上述那些暫存資料放到Dataram RamDisk之中。


備份RamDisk中的資料

那你會說,如果我想要保存在RamDisk的資料,可不可以?
答案是:可以。

在Gavotte RAMDisk時,必須是「開機指令碼」及「關機指令碼」來將RamDisk的資料在關機時存回HDD,開機時由HDD讀回RamDisk之中。但使用Dataram RamDisk不用那麼麻煩,我們可以直接設定,它就會幫我們進行Ram Disk的資料備份及還原動作,是不是很棒呀!

Load and Save

這夠明顯了吧,Load是開機時進行,Save是關機時進行,而且Save還能定時備份,這樣就你不用怕如文書作業到一半確掛點的問題。另外,Dataram RamDisk是使用類似Ghost的image檔案方式來存放你的RamDisk資料,這點我覺得很棒!

Load Image Settings

重點只有一個,把「Load Disk Image at Startup」打勾!其他是要存Img的路徑,還有是否要建立一個目錄來放Image檔。

Save Image Settings

重點只有一個,把「Save Disk Image on Shutdown」打勾!其他是否要定時備份,或按一下「Save Disk Image Now」來立即儲存Image檔。

Load and Save Settings

Dataram RamDisk Image

注意最後的Image大小,你建立1 GB的RamDisk,就會是1 GB的Image,由此證明,Dataram Disk的Image不是單純copy檔案,而是真正進行Image動作的Image檔案。另外,根據Reference第二篇有網友反應,所修改IE到RamDisk後會有問題,我自己家中是使用XP + Gavotte RAMDisk,並無此問題。我是有碰過修改IE路徑後,電腦執行就不太正常,改回來後就一切正常的情況,建議修改前將IE暫存「原始」路徑寫下,如出現問題,再修改回去即可。

最後,如果你有使用Load and Save功能,那就是在開機或關機時,會有那麼一點點Delay,原因上面說過了,關機Dataram RamDisk要製作Image檔,開機要將Image檔讀入, 可是這一點點Delay可是能換來非常高的效能提升,是非常值得的。

Reference:

最後Reference,Google Chrome暫存檔的設定簡單:「Chrome執行路徑 + --user-data-dir=暫存目錄」,以我電腦為例,「"C:\Users\IPC\AppData\Local\Google\Chrome\Application\chrome.exe" --user-data-dir=H:\Chrome」,你可以建立「捷徑」的方式,或,直接修改快速啟動列裡Chrome程式路徑加上參數,程式路徑要包在雙引號之內("~")後面加參考,這樣你就能指定Google Chrome暫存路徑到RamDisk裡。

推薦一些讓你學好英文的書--專門替中國人寫的英文課本,幼福2043系列

不讀書的快樂童年--英文,我一輩子最錯誤的決定

幼福2034童書

我在之前提過,放棄學英文是我一生最錯誤的決定,但近來我又重生了,為什麼重生,首先感謝我們兩位寶貝,大寶貝能動能靜,靜時,最喜歡我們陪她一起看書,依據婆婆的說法,最高記錄是一天看了近三十本的童書。我們還怕她看太多,每三、五本,還會叫她去看一下天空,讓眼睛休息一下。

這些童書我絕大部份都是買幼福公司出版的「2034、2035」系列。

2034很合適與小朋友一起看,不論是中文或英文部份,就英文部份,我發現童書的好處是「用字簡單」,你能看完一個完整的故事文章,且因為要陪孩子看,所以又會不斷重覆看,所以就能慢慢接受英文,你能慢慢增加對英文的興趣及信心,原來英文是不那麼難。而且,2034、2035系列,是中、英文有聲書,我都會先放英文再放中文給寶貝們聽,英文約10~15分鐘,中文約30~45分鐘,可以一邊學英文,又可以一邊聽故事,真是一舉二得。

經過與大寶貝一起看英文童書的心得後,後來又去峇里島自由行,在峇里島時,不知是不是常聽童書故事CD的關係,發現,我聽力變好了,他們說的內容大概都還能聽得懂。

我個人分析過,因為讀資訊的關係,我讀的很認真,所以「專業英文」還可以,基本上看相關技術文件都還沒問題,但…日常英文就很…馬馬馬馬虎虎虎虎(就是比馬馬虎虎還低一些)。我了解自己英文那裡有問題,就重新分配時間,之前的小說,抱歉了,我還有更重要的事要先做。

我想學好英文。

專門替中國人寫的英文課本

後來無意中發現了一套英文教學書:「專門替中國人寫的英文課本」,這個標題讓我很好奇,一翻,原來是李家同教授所策劃的一套英文教學書,我看了一下books的書評,好吧,也才100出頭元,沒看沒事,看了出事,一整個醍醐灌頂。

我才看完「初級本 (上)(下)」兩本,說真話,我一真以來都留在背單字階段,用單字在看句子。我紮實的練習書中的內容,比起過起任何一本英文書還有用,我真的是他那書中的中國人。這套「專門替中國人寫的英文課本」不是要拿來考試拿成績,而是要讓我們學習「使用英文」而非只是背單字、片語。

 Let we going to English world together.

如果你在聯經整套購買,例如,整套「聯經:專門替中國人寫的英文課本」共六本加其他兩本,我算了一下,比75折還低,實在划算。

如果你有心要學英文,但又不得其門而入,我推薦這套由「作者/文庭澍、策劃審訂/李家同」所撰寫的「專門替中國人寫的英文課本」,不管你英文有多爛,我相信這套書都能救得了你。

除了書中的練習,你還可以上「李家同教授的英文教室」,依你學習的進度去Practice,它每週換一次題目,讓你除了書中的內容,還可以多Practice其他的內容,多看、多寫、多聽、多說,準沒錯!

e-coupon大放送

Thank you to look me blog, I want send some gift for you. You can buy anything in Internet bookstore. I hope you like it. ^_^

(請已使用者回覆留言,說你已使用那一組序號)
Books.com.tw 100 E-Coupon:

以下為面額100元E-Coupon序號:DBJB7vgN

注意事項:
1. 使用期限為:2010年11月23日~2010年11月30日止,逾期無效。
2. 使用限制:單筆訂單滿888元(含)以上方可折抵使用。

iread.com.tw 25*2 E-Coupon:

6aAu2eWprs 使用期限:2010/11/23~2010/12/24
UsSqqORowV 使用期限:2010/11/23~2010/12/24

CSS, jQuery -- 動態調整網頁文字大小設計技巧

我們計設網頁時,都必須做一個非常全面的考慮,當字型考慮好了之後,然下來考慮文字的大小。文字對大家影響很大,太小看不清更,看起來吃力,太大又很奇怪,但你面對的使用者又是那種「一種米養百種人」的情況,這個說太大,那個說太小,怎麼辦?

那就要從最開始設計CSS時,就把文字大小的關係處理好,那接下來就可以很輕鬆搞定網頁上文字大小的問題。

基本這問題不難,先首第一步,必須利用CSS的「繼承」關係,由上而下繼承一個「主大小」,然後依各「元素」所需去自訂自己需要的大小,而非由各元素去各自自訂大小。

先看一個各元素去各自自訂大小的範例:

h1 {
  font-size: 24px;
}

h2 {
  font-size: 20px;
}

h3 {
  font-size: 16px;
}

p {
  font-size: 14px;
}

以上這種各自玩各自的遊戲,盡量不要,現在是合作的社會,所以我們來玩繼承合作遊戲:

body {
  /* 一般都會選擇 small 或 medium為主大小;
     small約 12px; medium 約 14px;
  */
  font-size: small;
}

h1 {
  /* 12px * 200% 約 24px */
  font-size: 200%;
}

h2 {
  /* 12px * 160% 約 19px */
  font-size: 160%;
}

h3 {
  /* 12px * 120% 約 14px  */
  font-size: 120%;
}

p {
  /* 12 * 1.5 = 18px  */
  font-size: 1.5em;
}

經由body來設定為主要字型大小,讓以下所有元素去「繼承」這個字型大小的設定,需要改變時,只需要利用「%, 百分比」或「em, 倍」的用法,即可立即享受到繼承的好處,例如,使用者覺得字太小了點,你只需要將body中「font-size: small;」改為「font-size: medium;」那整個網頁就馬上會將字型放大,而且相關的元素也會立即跟著變更,而不用一個一個去調整。

再來,我想讓使用者去手動變更網頁上字型的大小,怎麼做?

jQuery -- 手動讓使用者動態調整網頁文字大小

這邊我透過jQuery示範:

$(function(){
 // 加上flag是為了讓文字有切換的效果
 var flag = false;
 // 在一個input上(id=click)註冊onclick事件
 $('#click').bind('click',function(){
  if (flag){
   $('body').css('font-size','medium');
   flag = false;
  }
  else {
   $('body').css('font-size','large');
   flag = true;
  }
 });
});

其實很簡單,我們只要透過修改body裡的css屬性,將font-size變更,網頁立即產生效果。


學會CSS中繼承關係,你也能有像Yahoo國際水準的功能哦!

第一篇:簡單介紹JavaScript

  1. 變數命名
  2. 資料型別(data type)
  3. 關鍵字
  4. 保留字
  5. 比較符號
  6. 邏輯符號

建議使用右下方Popout按鍵來「全螢幕」觀看。


History

2010/05/06,整理資料至xmind。
2010/11/23,xmind內容轉為文字輸出。

ECMAScript(262)

ECMAScript定義了指令碼語言的所有語法、類型、語句、關鍵字、保留字、運算子和物件等,其他語言可以實現ECMAScript來作為功能基礎,JavaScript就是其中之一。




ECMAScript

JavaScript

ActionScript

ScriptEase

BOM

Browser Object Model,BOM提供Web開發者移動視窗、改變狀態列…一些與網頁內容無關的動作。

DOM

Document Object Model, 一種與瀏覽器、平台、語言無關的介面,DOM把整個網頁標籤轉換成節點樹架構的文件。

Web標準

將網頁分離為三個部份,結構、表現、行為。

  1. Structure--(X)HTML
  2. Presentation--CSS
  3. Behavior--JavaScript

傳統HTML的缺點

  1. 維護困難 為了修改某個標記格式,需要花費很多時間,越後期的修改、維護成本越高。
  2. 標記不足 HTML本身標記不足,HTML本身標記都是內容服務使用,關於美工、排版根本很少或沒有支援。
  3. 網頁過胖 傳統網頁除了包含HTML外,還加上CSS、JavaScript,最後還會加上動態程式語言,除了維護困難,頁面往往過於胖大,浪費許多頻寬。
  4. 定位困難 HTML在定位時就顯得捉襟見肘,過多的<table>也導致頁面的複雜和後期維護的困難。

對網站瀏覽者的好處

  1. 檔案下載、頁面顯示更快
  2. 內容能被更多使用者訪問(含殘障人士)
  3. 內容能被更多設備訪問(PDA、智慧手機…)
  4. 使用者能透過CSS選擇自己介面風格
  5. 由CSS提供適合列印版本

對網站開發者的好處

  1. 更少的程式碼
  2. 更容易維護
  3. 頻寬要求更低,例如,ESPN.com使用CSS改版,每天節約超過2TB的頻寬。
  4. 更容易被搜尋引擎接受,及更高的排名
  5. 改版方便(結構、表現、行為分離)
  6. 提高網站易用性,例如,美國:Section 508、台灣:無障礙空間、國際:WCAG

ECMAScript語法

  1. 區分大小寫
  2. 弱類型變數:定義變數只用"var"關鍵字,並可以初始化為任意的值。
  3. 每行結尾的分號可有可無


    養成良好的程式設計習慣,為每一句程式結尾都加上分號。


    在新版Browser中,不加分號會有問題
  4. 括孤{ }用區程式碼區塊
  5. 註解


    //這是單行註解


    /*


    這是多行註解


    */

變數

  1. 變數是透過var關鍵字來宣告,是記憶體裡獨一無二名稱(unique name)的存儲位置(storage location)。
  2. 變數在使用之前都應宣告(雖然不宣告也能使用)。
  3. 未宣告的變數,會自動建立為全域變數(在函式內也一樣),並初始化為指定的值。
  4. 同一變數應該只儲存一種資料型別,建立一個有初始值的變數,是種好習慣。

命名

  1. 字首必是英文字母、底線(_)或$符號。
  2. 其他可以是英文字母、底線(_)、數字、$符號。
  3. 變數不能是關鍵字或保留字。

命名規則

Camel

  • 首字母小寫,其他單字字首大寫
  • studentName, classNumber
  • 用於變數和函式

Pascal

  • 首字母大寫
  • FirstName, LastName
  • 用於物件

匈牙利

改良Pascal,在變數前加上(一個或一組)小寫字母來說明變數的型別。

  • i代表Integer,s代表String
  • int代表Integer,str代表String

項目

範例

縮寫

陳列

a / arr

sStudents

布林

b / bln

bSex

浮點數

f

fTax

函數

fn

fnSwap

整數

i / int

iAge

物件

o / obj

oCar

正規式

re / reg

reTWID

字串

s / str

strName

常數

  1. 常數用來建立一個不會改變的值,除了修改JavaScript原始碼之外。
  2. 常數透過const關鍵字來宣告
  3. 常數習慣以「全大寫字母」來命名,例如,const TAXRATE = .5;。
  4. const關鍵字最近才加入JavaScript,使用前請多檢查。IE到目前都還不支援(IE8)。

初始化

  1. 初始化背後的概念,在於避免存取沒有存入值的變數。
  2. 如果宣告時還不知變數值,可先使用「什麼都沒有」來當值,減低存取未初始化變數的風險。

初始值

範例

"",空字串

var name="";

0,數值

var price=0;

false,布林

var Select=false;

變數範圍(scope)

scope掌控變數的生命週期,還有程式碼是否可以存取變數。

區域變數(Local Variables)
在函數內宣告的變數,存在於函式執行時,只能在函式內的程式區塊使用。
全域變數(Global Variables)
變數在函數外宣告,整個JavaScript程式的函數和程式碼都可以存取。

資料型別(data type)





未定義(undefined)

某段資料未初始化,或沒有值

空(null)

不是字串的"",數字的0,布林的false,空就是空,代表一種空狀態。

布林(boolean)

true(成立)與false(不成立)

字串(string)

文字(text)資料只是一串字元,通常出現在單/雙引號之間

數值(number)

數字資料,未出現在單/雙引號之間的阿拉伯數字

物件(object)


參考(reference)

var check = function(evt){...};

列表(list)

完成(completion)
JavaScript基本資料型別,布林(boolean), 字串(string), 數值(number);JavaScript會在你設定資料時,自動判定型別,自動指定,我們無法在設定變數時設定資料型別。

關鍵字

  • break
  • case
  • catch
  • continue
  • default
  • delete
  • do
  • else
  • finally
  • for
  • function
  • if
  • in
  • instanceof
  • new
  • return
  • switch
  • this
  • throw
  • try
  • typeof
  • var
  • void
  • while
  • with

保留字

  • abstract
  • boolean
  • byte
  • char
  • class
  • const
  • debugger
  • double
  • enum
  • export
  • extends
  • final
  • float
  • goto
  • implements
  • import
  • int
  • interface
  • long
  • native
  • package
  • private
  • protected
  • public
  • short
  • static
  • super
  • synchronized
  • throws
  • transient
  • volatile
保留字一般較少使用,在物件導向程式設計中使用率比較高。

比較符號

比較符號 說明
== 等於
!= 不等於
> 大於
< 小於
>= 大於等於
<= 小於等於
=== 絕對等於
!== 絕對不等於
雙等號運算子(等於)會進行型態強制轉換,假如比較的資料型態不一樣,有時結果會相當有趣:1 == true會得true。要避免型態強制轉換,要用三等號運算子(絕對等於),例如,

1 === true會得false,還有一個!== (絕對不等於)運算子。

邏輯符號

邏輯符號 說明
&& And運算
|| Or運算
! Not運算