前言:剛畢業的應屆生,學習前端時間並不長,昨天參加面試,一輪筆試,兩輪技術面試。尤爲在技術面試的時候感受到本身基礎知識仍是搞的有些亂,也忽然明白到了一個紮實的Js基礎對於以後的路是有多重要。準備把Js高級程序設計的重點知識從頭梳理一遍。特此記錄一下本身學習的一些自認爲比較重要的筆記。看似最難走的路,可能倒是最快也是最穩的。
是ECMAScript5引入的一個概念。目的是使Ecma3中的不肯定行爲獲得處理,一些不安全的行爲也會拋出錯誤。它的支持版本比較高,IE10+
就是函數、變量、屬性的名字。標識符不能用保留字和關鍵字,使用關鍵字會致使identitierExpected錯誤,保留字看特定引擎報錯
Js變量是鬆散類型的,能夠用來保存任何類型的數據。
若是變量定義在函數中,那麼這個變量在函數退出後就會被銷燬。
e.g.前端
function test() { var msg = 'hi'; } console.log(msg) // 報錯
檢查一個錯誤:
報錯message未定義,爲何呢?
答:由於沒執行啊面試
ECMA中一共有5種簡單數據類型(基本數據類型)數據類型:undefined null boolean string number,1種複雜數據類型:Object安全
一元操做符(++,--,+,-)ide
位操做符函數
加減法操做符性能
關係操做符:學習
若是在關係操做符比較中,有一個值是數值,那麼另外一個值也會被強制轉換成數值,如:設計
任何操做數與NaN比較都是false指針
相等操做符code
var strEg = '1'; if(strEg == 1){ console.log(typeof strEg) // string } console.log(typeof strEg) // string
1.label,continue和break
break是當即退出當前層的循環,continue是從新開始下一層的循環,開始下一層的循環,例子
var num = 0; for(var i=0;i<10;i++) { for(var j=0;j<10;j++) { if(i == 5 && j == 5) { break; //TODO:95 // continue; //99 } num ++ } }
label和continue,break連用,能夠起到在那層退出(break)或在那層強制執行下次循環(continute)做用,例如
var num = 0; Outermost: for(var i=0;i<10;i++) { for(var j=0;j<10;j++) { if(i == 5 && j == 5) { break Outermost; } num ++ // 55 } } var num = 0; Outermost: for(var i=0;i<10;i++) { for(var j=0;j<10;j++) { if(i == 5 && j == 5) { continue Outermost; } num ++ // 95 } }
2.with語句
會致使性能降低,通常不用。爲何不能直接用對象代替呢?
3.switch語句
switch語句中的條件判斷是全等操做,沒有類型轉換的操做。
1.Return:只能用於函數中,當即退出函數並返回值。不能用在if,for的代碼塊中。若是return的值爲空,則當即中止執行函數,並返回undefined
2.傳遞的參數和arguments並非同一個內存空間,只是他們的值是同步的,同時argument的長度是由執行時傳入的參數決定的,而不是定義時決定的。
3.沒有重載
這篇只是一些簡單的基礎知識點,以後會把這些細小知識點分別展開寫成文章