js面試知識點匯總

1.什么是閉包?舉例說明
從作用域鏈談閉包
閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)询筏,
閉包實現(xiàn)累加效果

function addcount(){
? ? ? var num = 0;
? ? ? return function(){
? ? ? ? ? ? ? return num += 1;
? ? ? ? }
}
var add = addcount();
console.log(add());
console.log(add());


3.冒泡機制實現(xiàn)數(shù)組排序 從小到大

var arr = [7,4,9,1,6,2];
function sortAt(num){
? ? ? ? for(var i = 0 ;i < arr.length-1; i++ ){
? ? ? ? ? ? ? ? ? ? for(var j = i+1; j < arr.length;j++){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var v = arr[i]; //前一個的值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(v > arr[j]){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var index = arr[j]; //后一個的值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? arr[i] = index;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? arr[j] = v;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return arr;
}
console.log(sortAt(arr));


6.Js實現(xiàn)繼承的方法

第一種方法榕堰,借用構(gòu)造函數(shù)實現(xiàn)繼承

function Person(){
? ? ? ? ? ? this.name = "nana"
}
function Teacher(){
? ? ? ? ?Person.call(this);
? ? ? ? ?this.type="teacher";
}

Teacher無法繼承Person的原型對象,并沒有真正的實現(xiàn)繼承(部分繼承)嫌套;

第二種方法逆屡,借用原型鏈實現(xiàn)繼承

function Person(){
? ? ? ? ? this.name = "nana";
? ? ? ? ? this.play = 123;
}
function Teacher(){
? ? ? ? ?this.type="teacher";
}
Teacher.prototype = new Person();

7.DOM事件

DOM事件模型是什么:指的是冒泡和捕獲踱讨;
DOM事件流是什么:捕獲階段 => 目標(biāo)階段 => 冒泡階段
DOM事件捕獲的具體流程:window=>document=>html標(biāo)簽=>body=>目標(biāo)對象

8.事件委托

事件委托就是利用冒泡的原理魏蔗,把事件加到父元素或祖先元素上,觸發(fā)執(zhí)行效果痹筛。

<ul id="list">
? ? ? ? <li>item1</li>
? ? ? ? <li>item2</li>
? ? ? ? <li>item3</li>
</ul>

var list = document.getElementById("list");
list.addEventListener('click',function(event){
? ? ? ? ?event = event || window.event;
? ? ? ? ?var target = event.target || event.srcElement;
? ? ? ? ?if(target.nodeName == "LI"){
? ? ? ? ? ? ? ? ? ?alert(target.innerHTML);
? ? ? ? ?}
})

9.事件監(jiān)聽

.onclick 常規(guī)的事件綁定只執(zhí)行最后綁定的事件
btn.addEventListenter('click',function(){}) ?//可綁定多個事件
btn.attachEvent("onclcik",function(){})


10.ajax跨域

ajax出現(xiàn)請求跨域錯誤問題莺治。主要是因為瀏覽器的“同源策略”。同源策略指的是協(xié)議相同帚稠,域名相同谣旁,端口相同。
如何解決ajax跨域問題
1.jsonp滋早¢螅客戶端網(wǎng)頁通過添加了一個script元素,向服務(wù)器請求json數(shù)據(jù)杆麸,這種做法不受同源政策搁进;
2.代理請求方式解決接口跨域問題;配置proxy

11.mouseover 和 mouseenter的區(qū)別
mouseover浪感,當(dāng)指針穿過被選元素和子元素時,都會被觸發(fā)饼问;
mouseenter ,當(dāng)指針穿過被選元素時會被觸發(fā)篮撑;

12.行內(nèi)點擊事件改變樣式

onclick="style.backgroundColor ='red';style.Color='#333';"

13.js中判斷JSON數(shù)據(jù)是否存在某字段的方法

方法一: !('key'? in? obj)
方法二:obj.hasOwnProperty('key')?

15.作用域知識點

window.val = 1;
var json = {
? ? ? val:10,
? ? ? a:function(){
? ? ? ? ? ? ? this.val *= 2;
? ? ? ? ? ? ? return this.val;
? ? ? }
}
console.log(json.a());?
var a = json.a;? ?
console.log(a());?
json.a.call(window);?
console.log(json.a());?
console.log(window.a()) ;??
//20
//2
//40
//8

16.作用域知識點
a方法里作用域?qū)儆趙indow環(huán)境,所以此時匆瓜,val的的值屬于window.val? =1 ;

;(function(){
? ? ? ?var val = 1;
? ? ? ?var json = {
? ? ? ? ? ? ? val:10,
? ? ? ? ? ? ? a:function(){
? ? ? ? ? ? ? ? ? ? ? ? ?val *= 2;
? ? ? ? ? ? ? ?}
? ? ? ?};
? ? ?json.a();??
? ? ?console.log(json.val + val)? ?
}())

//12


18.原型鏈繼承知識點
B繼承A.prototype原型鏈上的方法赢笨;但屬性不繼承;
構(gòu)造函數(shù)如果有屬性時驮吱,會先找構(gòu)造函數(shù)里的屬性值茧妒,如果沒有,繼續(xù)找prototype上是否有屬性一值左冬;

function A(x){
? ? ? ? this.x = x;
}
A.prototype.x = 1;
function B(x){
? ? ? ? this.x =x;
}
B.prototype = new A();
var a = new A(2);
var b = new B(3);
delete b.x;
console.log(a.x);
console.log(b.x);
// 2
//undefined

22.?下面的代碼會輸出什么桐筏?為啥?

for(var i = 0; i < 5; i++) {
? ? ? ? setTimeout(
? ? ? ? ? ? ?function() { console.log(i);
? ? ? ? }, i * 1000 );
}
輸出5個5



25.神馬是 NaN拇砰,它的類型是神馬梅忌?怎么測試一個值是否等于 NaN?
NaN? ?(Not a Number 它不是一個數(shù)字) 類型是Number, isNaN()? ??
isNaN(23)? //false? isNaN('true')? ?//true

26.值類型和引用類型的區(qū)別
值類型 :將變量中的數(shù)據(jù)完整的拷貝一份,賦值給新的變量
var num = 123; var num1 = num;
console.log(num + num1)? ?//123,123
num = 1;
console.log(num + num1) //1,123
引用類型:表示變量存儲的是數(shù)據(jù)的地址除破,復(fù)制時只是把地址復(fù)制一份牧氮,同時指向數(shù)據(jù)
var o ={n:123}; var o1 = o;
console.log(o.n + o1.n); //123,123
o1.n = 1;
console.log(o.n + o1.n); //1,1

27.深拷貝和先拷貝

淺復(fù)制是對對象地址的復(fù)制,并沒有開辟新的棧瑰枫,也就是復(fù)制的結(jié)果是兩個對象指向同一個地址踱葛,修改其中一個對象的屬性,則另一個對象的屬性也會改變光坝。
深復(fù)制則是開辟新的棧尸诽,兩個對象對應(yīng)兩個不同的地址,修改一個對象的屬性盯另,不會改變另一個對象的屬性性含。
function deepCopy (data) {? ?
? ? ? ? ? ?return JSON.parse(JSON.stringify(data));
}

28.call和apply方法;
作用:.改變執(zhí)行上下文 實現(xiàn)繼承
第一個參數(shù) 指向的是一個對象(調(diào)用對象)鸳惯,只是apply的參數(shù)只有2個商蕴,第2個參數(shù)其實是一個偽數(shù)組
function superClass () {
? ? ? ? ? ? this.a = 1;
? ? ? ? ? ? this.print = function () {
? ? ? ? ? ? ? ? ? ?console.log(this.a);
? ? ? ? ? ? }
}
function subClass () {
? ? ? ? ? ? superClass.call(this);
? ? ? ? ? ? this.print();
}
subClass();

29.cmd和amd 的區(qū)別?
cmd和amd都是模塊開發(fā)的一種規(guī)范(模塊定義規(guī)范),amd加載模塊是提前加載模塊悲敷,cmd是延遲加載究恤,就近加載
define(function(require,exports,module{
? ? ? ? ?var? ? a=require('./a')
? ? ? ? ?a.doSomething()
? ? ? ? ?var? ? b=require('./b')
? ? ? ? ?b.doSomething();
})? //cmd
define(['./a','./b'],function(a,b){
? ? ?a.doSomething()
? ? ?b.doSomething()
})? //amd

html&&css

1.alt和title的異同

alt是圖片加載失敗時,顯示在網(wǎng)頁上替代的字后德;搜索引擎對圖片的判斷,主要是靠alt屬性抄腔。以簡要文字說明瓢湃,同時包含關(guān)鍵字理张。

title是鼠標(biāo)放在圖片上,顯示的文字绵患,是對圖片進一步的說明雾叭;

2.簡述一下src和href的區(qū)別;

href用于錨點或者文檔之間的鏈接落蝙,用于超鏈接织狐;

src指向外部資源的位置,指向的內(nèi)容將會嵌套在文檔中當(dāng)前標(biāo)簽所在位置筏勒;例如img,script;

3.html5新元素移迫;

新的表單控件;date管行、time厨埋、email

新的特殊內(nèi)容標(biāo)簽;footer捐顷、header荡陷、nav、aside

對本地離線儲存有了更好的支持迅涮;

用于媒介回放的video和audio;

4.什么是css hack

針對不同的瀏覽器寫不同的css,就是css hark废赞;

ie7 *background:blue; ie5 _background:red;

前綴加_或者*......

5.px和em的區(qū)別

px的值是固定的,是絕對單位叮姑,指定多少是多少蛹头,寫出來的大小只能和設(shè)計稿上的一樣;

em的值是相對于父級戏溺,是個相對元素,每次換算可能費點時間渣蜗,考慮父元素的設(shè)置大小旷祸;

rem是相對元素耕拷,指相對于根元素也就是html;html{font-size:62.5%} ?h1{font-size:2.4rem}

6.html5離線儲存

localStorage :長期儲存數(shù)據(jù)托享,瀏覽器關(guān)閉后數(shù)據(jù)也不會丟失

sessionStorage :數(shù)據(jù)在瀏覽器關(guān)閉后自動刪除骚烧;

7.移動端事件延遲300毫秒的問題

為什么會有300毫秒的延遲等待時間;這與雙擊縮放的方案有關(guān)闰围;瀏覽器捕獲第一次單擊后赃绊。會先等待一段時間,如果這段時間里羡榴,用戶進行了第二次單擊操作碧查,則瀏覽器會進行雙擊事件處理;如果沒有,則進行單擊事件的處理忠售。

解決方案1:meta標(biāo)簽禁止縮放

解決方案2:fastclick.js

8.服務(wù)器返回狀態(tài)了解

301传惠,302 重定向;

304 帶緩存刷新稻扬;

500 服務(wù)器錯誤卦方;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泰佳,隨后出現(xiàn)的幾起案子盼砍,更是在濱河造成了極大的恐慌,老刑警劉巖逝她,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浇坐,死亡現(xiàn)場離奇詭異,居然都是意外死亡汽绢,警方通過查閱死者的電腦和手機吗跋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宁昭,“玉大人跌宛,你說我怎么就攤上這事』蹋” “怎么了疆拘?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寂曹。 經(jīng)常有香客問我哎迄,道長,這世上最難降的妖魔是什么隆圆? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任漱挚,我火速辦了婚禮,結(jié)果婚禮上渺氧,老公的妹妹穿的比我還像新娘旨涝。我一直安慰自己,他們只是感情好侣背,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布白华。 她就那樣靜靜地躺著,像睡著了一般贩耐。 火紅的嫁衣襯著肌膚如雪弧腥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天潮太,我揣著相機與錄音管搪,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛抛蚤,可吹牛的內(nèi)容都是我干的台谢。 我是一名探鬼主播寻狂,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼岁经,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蛇券?” 一聲冷哼從身側(cè)響起缀壤,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纠亚,沒想到半個月后塘慕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蒂胞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年图呢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骗随。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛤织,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸿染,到底是詐尸還是另有隱情指蚜,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布涨椒,位于F島的核電站摊鸡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚕冬。R本人自食惡果不足惜免猾,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望囤热。 院中可真熱鬧猎提,春花似錦、人聲如沸赢乓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牌芋。三九已至蚓炬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躺屁,已是汗流浹背肯夏。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驯击。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓烁兰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親徊都。 傳聞我的和親對象是個殘疾皇子沪斟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348