JavaScript Object - Error物件

Error物件

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; //取消系統事件
}

Debug 參考資料

Firebug Console API

JavaScript Object - Math物件

Math物件屬性

Math物件屬性
名稱說明
E自然數e=2.718281828459045
LN2ln2=0.6931471805599453
LN10ln10=2.302585092994046
LOG2Elog2e=1.4426950408889633
LOG10Eloge=0.4342944819032518
PI圓周率=3.141592653589793
SQRT1_2根號1/2=0.7071067811865476
SQRT2根號2=1.4142135623730951

亂數、最大值、最小值

Math物件之亂數、最大值、最小值
名稱說明
max(value1,value2)傳回參數中的最大值,參數無限制
min(value1,value2)傳回參數中的最小值,參數無限制
random()傳回亂數值
round(value)將參數值四捨五入後傳回

此表格中的 random()與 round(value)兩個函式算很常使用。

數學方法

Math物件之數學方法
名稱說明
abs()傳回絕對值
acos()反餘弦函數
asin()反正弦函數
atan()反正切函數
atan2(y,x)反回原點和座標(x,y)的連線與x正軸的夾角
ceil()傳回大於或等於參數的最小整數
cos()餘弦函數
exp()自然數的指數ex
floor()傳回大於或等於參數的最大整數
log()自然對數
pow()次方
sin()正弦函數
sqrt()傳回參數的平方根
tan()正切函數

JavaScript - JSON裡的字串(String)

曾經夢想過,有一天有人可以統一程式世界,現實社會不可能,在虛擬世界也不可能。以上這段話的意思是說,如果我們只要會一種程式語言,就能寫任何平台的程式,那不知道有多好?程式設計人員,應該是全世界最了不起的語言使用者,從Client端到Server端,無一不需要了解,現實社會裡,如果你認識一位會六國語言的人(我真的認識一位女生),你會認為他是超人,但在虛擬的程式世界裡,六種語言,如果連HTML, XHTML…都細分的話,六種可能只是肉腳級。

以上是看到「JSON之教學筆記」第一位讀者留言的感想。回主題,JSON裡的字串(String)。因為讀者抓出錯誤,我測試後也真正是錯的。

JSON官方裡有一句話:a string in double quotes…就已經點出我的錯誤,只是寫文章時瀏覽過去,也沒特別注意,而各位讀者也沒多去驗證,真是你我的不應該。

// 正確版:感謝"匿名"讀者提供
var jsonData = '{"familys" : [{"name" : "Bruce", "age" : 18, "sex" : "male"}, {"name" : "Sherry","age" : 16, "sex" : "famale"}]}';

// 不正確版: KKBruce 提供
var jsonData = "{'familys'=[{'name' : 'Bruce', 'age' : 18, 'sex' : 'male'}, {'name' : 'Sherry','age' : 16, 'sex' : 'famale'}]}";

原文不修正,以回頭參考文章時,自我提醒。

當PC輸出至大尺寸電視時,字非常模糊,怎麼辦?

環境:PC <--> HDMI <--> LM4238

試了好久,簡單做個筆記。

圖一:顯示卡設定為「交錯式」
將顯示卡設定為「交錯式」。這可以讓PC輸出至電視的字,不在刺眼及模糊(其實只改善了50
%)。

再來將字放大,依電視尺寸,最少應該都會設為150%,我是放到200%,才感到比較Nice。

這樣之後,要在大尺寸的電視看「字」才比較不是問題。

P.S 看影片非常Nice,畫質越高越好,用大尺寸電視看影片,就是將享受。
P.S 與Plurk上的大大討論後,以上方式只合適我自己,你可以當成測試方式之一,不保證能解決你的問題。(目前我沒有多餘有HDMI介面的PC/NB可測試,無法確定是PC的顯示卡有問題,還是電視本身的問題。)

JavaScript Object - 日期物件(Date Object)

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

取得日期和時間

Date Object - 取得日期和時間
名稱說明
getDate()傳回日期值1~31
getDay()傳回星期值0~6,也就是星期日到星期六
getMonth()傳回月份值0~11,也就是一到十二月
getFullYear()傳回完整的年份,例如:2012
getYear()傳回年份,如果在1900~1999年間,傳回後兩碼,例如,1998年傳回98,否則傳回完整的年份
getHours()傳回小時0~23
getMinutes()傳回分鐘0~59
getSeconds()傳回秒數0~59
getMilliseconds()傳回千分之一秒為單位的秒數,0~999
getTime()傳回自1/1/1970年開始的秒數,以千分之一秒為單位

設定日期和時間

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

Date Object - 設定日期和時間
名稱說明
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年開始,以千分之一秒為單位

除了getDay()沒有對應的setDay()之外,每一個getXXX()就有一個SetXXX(),通常使用getXXX()的機會大些,所以記getXXX()就好了。

日期和時間的轉換

Date Object - 日期和時間的轉換
名稱說明
getTimezoneOffset()傳回本地時間和GMT的時間差,以分為單位
toGMTString()傳回轉換成GMT時間的字串
toLocalString()傳回將GMT轉換成本地時間的字串
parse(Date)傳回參數Date物件從1/1/1970到本地時間的毫秒數,以千分之一秒為單位
UTC(Date)傳回參數Date物件從1/1/1970到GMT時間的毫秒數,以千分之一秒為單位