打算寫一個前端面試系列的知識,博客好久沒有進行更新,更新的都是一些的基礎知識。
最近在投簡歷進行面試,說是面試,其實就是一個本身的使用本身大白話的知識歸納吧。歡迎感興趣的小夥伴進行學習或者提出建議和改正!
大概計劃章節以下
1-1 關於面試題
2-1 變量類型和計算-變量類型
2-2 變量類型和計算-強制類型轉換
2-3 變量計算-理解json
2-4 原型和構造函數-構造函數
2-5 原型和構造函數-原型規則
2-6 原型和構造函數-原型鏈
3-1 做用域和閉包-變量提高
3-2 做用域和閉包-this
3-3 做用域和閉包-做用域
3-4 做用域和閉包-閉包
4-1 異步和單線程-異步
4-2 異步和單線程-單線程
5-1 日期經常使用API
5-2 數組經常使用API
5-3 undefined和null
1-1 關於面試題
關於面試,雖然我我的還在面試過程中,可是我有抽空看一點點的題目。我以爲認爲萬變不離其宗,基礎知識把握好,題目作起來就不會錯得那麼難看哈哈哈。
看到題目,1:看考點;2:知識點;3:擴展;
2-1 變量類型和計算-變量類型(按存儲方式區分類型)
變量類型分爲:值類型和引用類型
基本數據類型(值類型)分爲:undefined,null,number,boolean,string.
引用類型分爲:對象、數組、函數等
二者之間的區別在於:值類型每一個變量的儲存各自的值不會相互影響,不能夠添加屬性和方法。而引用類型恰好相反
值類型簡單代碼演示php
var a = 100; var b = a; a = 200; console.log(b)//100
引用類型代碼演示html
var a = {age:20};//a賦值對象 var b = a;//b的指針指向a b.age = 21; console.log(a.age)//21
使用typeof能夠進行檢測值類型和函數,可是引用類型的對象數組區分不出來,也能夠用instanceof指定類型對象來檢測
推薦文章:https://segmentfault.com/a/11...
2-2 變量類型和計算-強制類型轉換:變量的計算會致使類型的強制轉換
變量的計算大概有如下幾種:
一、字符串的拼接:
如下代碼輸出的結果是什麼前端
console.log(1+'2'+'2');//122 console.log(1++'2'+'2');//1++'2'變成1+2,等於3拼接成爲32 console.log('A'-'B'+'2');//NAN加上拼接的字符2 結果爲NAN2 console.log('A'-'B'+2);//前面是NAN,後面是加法運算+2。運算操做中其中一個爲NAN則總體爲NAN
二、== 運算符
何時用==,何時用===
==值相等,===徹底相等(包括類型);jquery
if (obj.a==null){ //至關於obj.a==null||obj.a===undefined的簡寫形式 //這個是jquery源碼推薦的寫法 }
三、if語句面試
var b = 100; if(b){ //此處的b強制轉換成布爾類型 }
四、邏輯運算符號ajax
console.log(10&&0);//0; console.log("||'abc'");//||'abc'; console.log(!window.abc);//true; var a = 100; console.log(!!a);//兩個!!則是true
2-3 變量計算-理解json
json在js中是對象和數組,經常使用的json就是將json轉換成字符串,字符串轉換成對象。
json是一種數據交換的文本格式,目的是取代繁重的xml
json經常使用Api:json
json.stringify({a:10,b:20}); //json轉換成字符串 json.parse('{"a":10,"b":20}') //字符串轉換成json
推薦文章:http://blog.csdn.net/qq_32528...
2-4 原型和構造函數-構造函數
什麼是構造函數?
普通函數要建立一類對象時,就被稱爲構造函數,也叫構造器。new fn()的形式建立,new對象的過程也克隆了obj.prototype對象segmentfault
function Foo(){ //建議構造函數首字母大寫 this.name = 20; } var Foo2 = new Foo; console.log(Foo2.name);//20
函數的建立方式數組
fn();//不報錯 function fn(){ //函數聲明式,定義在哪都能調用 } fn1();//報錯 var fn1 = function(){ //函數表達式,繼承的是變量,調用只能在定義後面 }
2-5 原型和構造函數(constructor)-原型規則
一、全部引用類型,_proto_屬性值指向它的構造函數的prototype屬性值:
obj._proto_ === object.prototype;
Fn.prototype.constructor === Fn:
instanceof方法能夠判斷引用類型屬於哪一個構造函數的方法,判斷變量是不是數組類型。
二、可擴展性
推薦文章:https://www.cnblogs.com/pompe...
極力推薦,配合文章中的代碼實戰更爲清晰
2-6 原型和構造函數-原型鏈
原型鏈:是一種行爲委託機制。
配合__proto__指向的鏈路從下往上尋找,找不到就是unefined
一個原型鏈繼承的例子。【注意修改id,此處演示id爲div1】網絡
function Elem(id){ this.elem = document.getElementById(id) }; Elem.prototype.html = function(val){ var elem = this.elem; if (val){ elem.innerHTML = val; return this; }else { return elem.innerHTML } } var div1 = new Elem('div1'); div1.html('<p> hello </p>');
new 一個對象的過程
建立、this指向、執行對this賦值、返回this
3-1 做用域和閉包-變量提高
一個變量,在局部做用域的級別優先於全局做用域
自由變量:即當前做用域沒有定義的變量
var a = 250; function fn(){ var b = 100; console.log(a);//自由變量 console.log(b); } fn(); //250 //100
換一種狀況
var a = 250; function fn(){ console.log(a);//自由變量,變量在局部獲得提高,還未賦值狀態 var a = 100;//獲得提高 console.log(a); } fn(); //undefined //100
以上另外一種狀況的代碼演示,就叫作提高自由變量
3-2 做用域和閉包-this
this在執行時才能確認值,定義時沒法確認
擴展認識:
call、apply、bind綁定this指向。這其中最經常使用的是call
function fn1(name,age){ alert(name); console.log(this); } fn1.call({x:100},'zhangsan',20); //彈出「zhangsan」 //this指向{x: 100}
3-3 做用域和閉包-做用域
分爲局部做用域和全局做用域。局部同名變量優先級高於同名全局變量。js沒有塊級做用域
做用域鏈:自由變量從下往上往父類進行查找是否存在這個屬性。這個一整個的過程就是做用域鏈
3-4 做用域和閉包-閉包
內部函數能引用外部函數中的變量,和做用域鏈密不可分,存儲私有屬性,封裝變量。
4-1 異步和單線程-異步
js是單線程,異步和單線程是相輔相成的。
單線程就意味着不能同時作兩件事,而同步會阻塞代碼的運行,因此只能排隊。而異步就是個插隊的。
何時會用到異步?
須要進行耗時較長的操做都會用到異步。好比網絡請求ajax、動態<img>加載等
4-2 異步和單線程-單線程
單線程一次只能完成一件事,其他的任務都得排隊按順序完成,前一個完成了才能進行下一個
5-1 日期經常使用API
getTime();//毫秒數 getFullYear();//年 getMonth();//月 (0~11)要+1 getDate();//日 getHours();//小時 getMinutes();//分鐘 getSeconds();//秒 Date.now();//當前時間毫秒數 new Date();//當前時間
5-2數組經常使用API
forEach:遍歷 every:判斷全部元素是否都符合條件 some:判斷是否至少有一個元素符合條件 map:從新組裝數組元素 filter:過濾符合條件的元素 sort:排序(從小到大、從大到小)
5-3 undefined和null
var a = undefined; var b = null; a == b;//true a === b;//true
以上代碼顯示出null和undefined的行爲很是類似
可是根據用法來講
null表示「沒有對象「的意思,就是此處不該該有值
undefined表示」缺乏值「,就是此處應該有值,可是尚未定義
null經常使用狀況
做爲參數,表示這個參數不是對象
做爲原型鏈的終點
undefined經常使用狀況
變量聲明瞭,沒有賦值
調用函數時,沒有提供該有的參數,該參數爲undefined
對象沒賦值屬性,屬性值爲undefined
函數沒返回值時,默認返回undefined
轉載於猿2048:➨《基礎知識總結-前端面試(一)》