2012年8月30日 星期四

[宅] javascript筆記(3) - 正規表示式以及undefined的定義



About 正規表示式...

今天在coding的時候發現傳遞正規表示式的過程中似乎會默認它的型態為String,例如:
var reg = /\S/; //此時還是正規表示式

var str = "kevin";

check(reg, str); //丟進function後就變成String了

這時在check()中的reg.test(str)就會失效

經過survey後發現正規表示式其實是一個物件,在javascript中我們可以這樣來定義他:

var patt=new RegExp(pattern,modifiers);

//or below:

var patt=/pattern/modifiers;(pattern,modifiers);

實際的使用方法可以參考w3school的教學:
http://www.w3schools.com/js/js_obj_regexp.asp

所以在開頭提到的例子中我們可以先在check()的scope裡以str為變數新增一個正規表示式,如下:

var pat = new RegExp(reg);

alert(pat.test(str));

這樣就沒問題了~ :)


About "undefined"...

今天也遇到了讀取物件不存在的attribute會傳回undefined的問題,因為我們事先並不知道這個attribute是不是被建立了,所以我們可以用
typeof(obj.attr)=="undefined";
來判斷~