近來一直在學習js和jquery。剛剛進入前端工作還沒有多久,雖然大學里學習的是編程自認為也學的還可以,但前端接觸的不多,一直認為前端十分簡單。其實不然,特別是工作的時候要自己設計一個完整的項目前端,發現其中還是有許多的問題,需要去摸索的。因為項目的需求,我其實先學的是jquery,但jquery是基於js的所以我差不多是兩者一起學習。近來項目已經進行了一段時間,所以想記錄一下自己學習的過程,分享一點微薄經驗給大家。如果有什么問題,十分樂意大家指出。
(一)、javascript的核心:
1、ECMASCRIPT(定義了其語法、類型、語句、關系等。)
2、文檔對象DOM(級別1級、2級、3級,我們一般用2級即可滿足開發的需求,這個我也不怎么了解,但十分有興趣,在之后有一定水准后再來仔細研究)
3、瀏覽器對象模型BOM
(二)、操作符
1、typeof():返回的類型有undefined、string、number、object、function。
其中注意:typeof(null)返回的是object;typeof([1,2,3,4])返回值也是object;typeof(undefined)返回的是undefined。
所以當你要判斷某個對象的話:
if(typeof(value)=='object' && Object.prototype.toString.call(value).toLowerCase()=='[object object]' && !value.length){
if('displayName' in value) return value.displayName;
}
其中:Object.prototype.toString.call()也是法判斷數據類型的方法,有興趣的可以網上找
2、isNaN():用於檢查其參數是否是非數字值,也可用於判斷其參數是否是 NaN,因為NaN不能用==或者===來進行判斷,所以isNaN()是必須的。
(三)、String
1、轉義:\n換行、\t制表、\b空格、\r回車、\f進紙、\\斜杠、\'單引號、\"雙引號、\xnn以十六進行表示一個字符。
2、toString():將數值轉化成String,但undefined和Null不可轉化,可以用String()強制類型轉化。
(四)、運算符
1、+加、-減、*乘、/除、%求余
2、自動類型轉化:+box(取正)、-box(取負)
3、一元運算符
前置遞增(++box),后置遞增(box++)。如果沒有進行賦值,那么兩者都一樣。
例:var box = 100; var box = 100;
var age = ++box; //box先累加,再將box賦值給age var age = box++; //先將box賦值給age然后,box自身再進行累加
結果:age=101;box=101 結果:age=100;box=101
4、關系運算符
注意:如果2個數進行比較,其中一個數為數值、另外一個數為字符則會將字符轉化為數值進行比較;如果2個都是字符則將各自的第一個字符轉化為
ASCII碼進行比較。
例:“123”>"22" //返回false
(五)、語句
1、只有一行語句的叫單行語句,用{}包含的語句集合叫復合語句
2、if語句:如果符合if語句的判斷,那么執行if后面的一條語句(代表如果沒有{}包含的話,只執行后面的一條語句),個人建議不過是不是只執行一句最后都用{}
包含,以便於代碼維護。if里面的判斷。數值、字符都會轉化為true;0或者“”則是false
(六)、switch-case:
1、其中break中途退出,防止穿透。再循環中也可用於跳出整個循環。
2、default 相當於if語句中的else
(七)、do...while和while:do...while先運行再判斷,不過是否符合判斷都先運行一次。while,先判斷再運行。
(八)、for ...in是一種精准的迭代,可用來枚舉屬性
var box = { for(var x in box){
'name':'張三', console.info(x); //注意枚舉的是屬性,結果:name、age、height
'age':'26', }
'height':'176'
}
(九)、break和continue:break退出循環,continue退出當前循環。
(十)、whith:將代碼作用域設置到一個特定的參數中
with(box){
var n = name; //相當於box.name
}
這一次的總結先到這里,雖然都十分的基礎,但是運用熟練的話也可以減少一些代碼量的。如果其中有什么問題或者補充的話,是否樂意大家指出。
JS基礎學習篇(二)