国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端面試題總結(jié)——JS(持續(xù)更新中)

shery / 2643人閱讀

摘要:在此基礎(chǔ)上加入了回調(diào)函數(shù),加載完之后會執(zhí)行中定義的函數(shù),所需要的數(shù)據(jù)會以參數(shù)的形式傳遞給該函數(shù)。通常的做法是,為它們指定回調(diào)函數(shù)。

前端面試題總結(jié)——JS(持續(xù)更新中) 1.javascript的typeof返回哪些數(shù)據(jù)類型

Object number function boolean underfind string

2.例舉3種強(qiáng)制類型轉(zhuǎn)換和2種隱式類型轉(zhuǎn)換?

強(qiáng)制(parseInt,parseFloat,number)
隱式(== - ===)

3.split() join() 的區(qū)別

前者是切割成數(shù)組的形式,后者是將數(shù)組轉(zhuǎn)換成字符串

4.數(shù)組方法pop() push() unshift() shift()

Unshift()頭部添加 shift()頭部刪除
Push()尾部添加 pop()尾部刪除

5.IE和DOM事件流的區(qū)別

1.執(zhí)行順序不一樣、
2.參數(shù)不一樣
3.事件加不加on
4.this指向問題

6.IE和標(biāo)準(zhǔn)下有哪些兼容性的寫法

Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target

7.ajax請求的時(shí)候get 和post方式的區(qū)別

1.一個(gè)在url后面 一個(gè)放在虛擬載體里面
2.有大小限制
3.安全問題
4.應(yīng)用不同 一個(gè)是論壇等只需要請求的,一個(gè)是類似修改密碼的

8.call和apply的區(qū)別

Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)

9.ajax請求時(shí),如何解析json數(shù)據(jù)

使用eval parse 鑒于安全性考慮 使用parse更靠譜

10.寫一個(gè)獲取非行間樣式的函數(shù)
function getStyle(obj, attr, value) {
if(!value) {
if(obj.currentStyle) {
return obj.currentStyle(attr)
}
else {
obj.getComputedStyle(attr, false)
}
}
else {
obj.style[attr]=value
}
}
11.事件委托(代理)是什么

讓利用事件冒泡的原理,讓自己的所觸發(fā)的事件,讓他的父元素代替執(zhí)行!

12.閉包是什么,有什么特性,對頁面有什么影響

閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。
http://blog.csdn.net/gaoshanw... (問這個(gè)問題的不是一個(gè)公司)
也可以直接點(diǎn)擊此處查看之前更的關(guān)于閉包的文章

13.如何阻止事件冒泡和默認(rèn)事件

stoppropagation / preventdefault

14.添加 插入 替換 刪除到某個(gè)接點(diǎn)的方法

obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild

15.解釋jsonp的原理,以及為什么不是真正的ajax

動態(tài)創(chuàng)建script標(biāo)簽,回調(diào)函數(shù)
Ajax是頁面無刷新請求數(shù)據(jù)操作

16.javascript的本地對象,內(nèi)置對象和宿主對象

本地對象為array obj regexp等可以new實(shí)例化
內(nèi)置對象為gload Math 等不可以實(shí)例化的
宿主為瀏覽器自帶的document,window 等

17.document load 和document ready的區(qū)別

頁面加載完成有兩種事件:
一.是ready,表示文檔結(jié)構(gòu)已經(jīng)加載完成(不包含圖片等非文字媒體文件)。
二.是onload,指示頁面包含圖片等文件在內(nèi)的所有元素都加載完成。

18.”==”和“===”的不同

前者會自動轉(zhuǎn)換類型
后者不會

19.javascript的同源策略

同源策略是一個(gè)很重要的安全理念,它在保證數(shù)據(jù)的安全性方面有著重要的意義,
一段腳本只能讀取來自于同一來源的窗口和文檔的屬性,這里的同一來源指的是協(xié)議、域名和端口號的組合

20.最快捷的數(shù)組求最大值
var arr = [ 1,5,1,7,5,9];
Math.max(...arr)  // 9 
21.更短的數(shù)組去重寫法
[...new Set([2,"12",2,12,1,2,1,6,12,13,6])]

// [2, "12", 12, 1, 6, 13]
22.排序算法

升序:

var numberArray = [3,6,2,4,1,5];
numberArray.sort(function(a,b){  
   return a-b;
})
console.log(numberArray);
23.冒泡排序
var examplearr=[8,94,15,88,55,76,21,39];
function sortarr(arr){
    for(i=0;iarr[j+1]){
                var temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
    return arr;
}
sortarr(examplearr);
console.log(examplearr);
24.null和undefined的區(qū)別:

null:表示無值;undefined:表示一個(gè)未聲明的變量,或已聲明但沒有賦值的變量,
或一個(gè)并不存在的對象屬性。

25.使用閉包的注意點(diǎn):

1.由于閉包會使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會造成網(wǎng)頁的性能問題,在IE中可能導(dǎo)致內(nèi)存泄露。解決方法是,在退出函數(shù)之前,將不使用的局部變量全部刪除。

2.閉包會在父函數(shù)外部,改變父函數(shù)內(nèi)部變量的值。所以,如果你把父函數(shù)當(dāng)作對象(object)使用,把閉包當(dāng)作它的公用方法(Public Method),把內(nèi)部變量當(dāng)作它的私有屬性(private value),這時(shí)一定要小心,不要隨便改變父函數(shù)內(nèi)部變量的值。
(關(guān)于閉包,詳細(xì)了解請看JavaScript之作用域與閉包詳解)

26.請解釋JSONP的工作原理,以及它為什么不是真正的AJAX。

JSONP (JSON with Padding)是一個(gè)簡單高效的跨域方式,HTML中的script標(biāo)簽可以加載并執(zhí)行其他域的javascript,于是我們可以通過script標(biāo)記來動態(tài)加載其他域的資源。例如我要從域A的頁面pageA加載域B的數(shù)據(jù),那么在域B的頁面pageB中我以JavaScript的形式聲明pageA需要的數(shù)據(jù),然后在 pageA中用script標(biāo)簽把pageB加載進(jìn)來,那么pageB中的腳本就會得以執(zhí)行。JSONP在此基礎(chǔ)上加入了回調(diào)函數(shù),pageB加載完之后會執(zhí)行pageA中定義的函數(shù),所需要的數(shù)據(jù)會以參數(shù)的形式傳遞給該函數(shù)。JSONP易于實(shí)現(xiàn),但是也會存在一些安全隱患,如果第三方的腳本隨意地執(zhí)行,那么它就可以篡改頁面內(nèi)容,截獲敏感數(shù)據(jù)。但是在受信任的雙方傳遞數(shù)據(jù),JSONP是非常合適的選擇。

AJAX是不跨域的,而JSONP是一個(gè)是跨域的,還有就是二者接收參數(shù)形式不一樣!

27.請解釋變量聲明提升。

在函數(shù)執(zhí)行時(shí),把變量的聲明提升到了函數(shù)頂部,而其值定義依然在原來位置。

28.如何從瀏覽器的URL中獲取查詢字符串參數(shù)。

以下函數(shù)把獲取一個(gè)key的參數(shù)。

  function parseQueryString ( name ){
      name = name.replace(/[[]/,"[");
      var regexS = "[?&]"+name+"=([^&#]*)";
      var regex = new RegExp( regexS );
      var results = regex.exec( window.location.href );
 
      if(results == null) {
          return "";
      } else {
     return results[1];
     }
 }
29.arguments是什么?

arguments雖然有一些數(shù)組的性質(zhì),但其并非真正的數(shù)組,只是一個(gè)類數(shù)組對象。
其并沒有數(shù)組的很多方法,不能像真正的數(shù)組那樣調(diào)用.jion(),.concat(),.pop()等方法。

30.什么是”use strict”;?使用它的好處和壞處分別是什么?

在代碼中出現(xiàn)表達(dá)式-“use strict”; 意味著代碼按照嚴(yán)格模式解析,這種模式使得Javascript在更嚴(yán)格的條件下運(yùn)行。

好處:
1.消除Javascript語法的一些不合理、不嚴(yán)謹(jǐn)之處,減少一些怪異行為;
2.消除代碼運(yùn)行的一些不安全之處,保證代碼運(yùn)行的安全;
3.提高編譯器效率,增加運(yùn)行速度;

壞處:
1.同樣的代碼,在”嚴(yán)格模式”中,可能會有不一樣的運(yùn)行結(jié)果;一些在”正常模式”下可以運(yùn)行的語句,在”嚴(yán)格模式”下將不能運(yùn)行。

31.什么是回調(diào)函數(shù)?

1.就是一個(gè)函數(shù)的調(diào)用過程。那么就從理解這個(gè)調(diào)用過程開始吧。
函數(shù)a有一個(gè)參數(shù),這個(gè)參數(shù)是個(gè)函數(shù)b,當(dāng)函數(shù)a執(zhí)行完以后執(zhí)行函數(shù)b。那么這個(gè)過程就叫回調(diào)。

2.另外種解釋:開發(fā)網(wǎng)站的過程中,我們經(jīng)常遇到某些耗時(shí)很長的javascript操作。其中,既有異步的操作(比如ajax讀取服務(wù)器數(shù)據(jù)),也有同步的操作(比如遍歷一個(gè)大型數(shù)組),它們都不是立即能得到結(jié)果的。
通常的做法是,為它們指定回調(diào)函數(shù)(callback)。即事先規(guī)定,一旦它們運(yùn)行結(jié)束,應(yīng)該調(diào)用哪些函數(shù)。

32.使用 typeof bar === “object” 判斷 bar 是不是一個(gè)對象有神馬潛在的弊端?如何避免這種弊端?
let obj = {};
let arr = [];
 
console.log(typeof obj === "object");  //true
console.log(typeof arr === "object");  //true

從上面的輸出結(jié)果可知,typeof bar === “object” 并不能準(zhǔn)確判斷 bar 就是一個(gè) Object。可以通過 Object.prototype.toString.call(bar) === “[object Object]” 來避免這種弊端:

let obj = {};
let arr = [];
 
console.log(Object.prototype.toString.call(obj));  //[object Object]
console.log(Object.prototype.toString.call(arr));  //[object Array]
33.下面的代碼會輸出什么?為什么?
    console.log(1 +  "2" + "2"); //122
    console.log(1 +  +"2" + "2"); //32
    console.log(1 +  -"1" + "2"); //02
    console.log(+"1" +  "1" + "2"); //112
    console.log( "A" - "B" + "2"); //NaN2
    console.log( "A" - "B" + 2); //NaN
    console.log("3" + 2 + 1);//321
    console.log(typeof +"3");  //number
    console.log(typeof (""+3));  //string
    console.log("a" * "sd");   //NaN
34.邏輯運(yùn)算

或邏輯時(shí):當(dāng)0在前面時(shí)console.log((0|| 2));則輸出為后面的數(shù),為2;

     當(dāng)除0以為的數(shù)在前面時(shí)console.log((2|| 0));則輸出為2;

與邏輯時(shí):當(dāng)只要有0時(shí)console.log(0&&2 );則輸出都為0;

     當(dāng)不存在0時(shí),console.log(1&&2 );則輸出都為后面的一個(gè),為2;
                 console.log(2&&1 );則輸出為1;
35.在 JavaScript,常見的 false 值:

0, "0", +0, -0, false, "",null,undefined,null,NaN

要注意空數(shù)組([])和空對象({}):

    console.log([] == false) //true
    console.log({} == false) //false
    console.log(Boolean([])) //true          
36.解釋下面代碼的輸出
 var a={},
        b={key:"b"},
        c={key:"c"};
     
    a[b]=123;
    a[c]=456;
     
    console.log(a[b]);

因?yàn)樵谠O(shè)置對象屬性時(shí),JS將隱式地stringify參數(shù)值。
在本例中,由于b和c都是對象,它們都將被轉(zhuǎn)換為“[object object]”。
因此,a[b]和[c]都等價(jià)于[[object object]],并且可以互換使用。
所以,設(shè)置或引用[c]與設(shè)置或引用a[b]完全相同。`

37.解釋下面代碼的輸出
(function(x) {
    return (function(y) {
        console.log(x);
    })(2)
})(1);

輸出1,閉包能夠訪問外部作用域的變量或參數(shù)。

38.請寫出以下輸出結(jié)果:
function Foo() {
    getName = function () { alert (1); };
    return this;
}
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
var getName = function () { alert (4);};
function getName() { alert (5);}

Foo.getName(); //2
getName(); //4
Foo().getName(); //1
getName(); //1
new Foo.getName(); //2
new Foo().getName(); //3
new new Foo().getName(); //3
39.談?wù)勀銓jax的理解?(概念、特點(diǎn)、作用)

AJAX全稱為“Asynchronous JavaScript And XML”(異步JavaScript和XML)是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的開發(fā)技術(shù)、改善用戶體驗(yàn),實(shí)現(xiàn)無刷新效果。

優(yōu)點(diǎn)

a、不需要插件支持
b、優(yōu)秀的用戶體驗(yàn)
c、提高Web程序的性能
d、減輕服務(wù)器和帶寬的負(fù)擔(dān)

缺點(diǎn)

a、破壞瀏覽器“前進(jìn)”、“后退”按鈕的正常功能,可以通過簡單的插件彌補(bǔ)
b、對搜索引擎的支持不足

40.說說你對延遲對象deferred的理解?

a、什么是deferred對象

在回調(diào)函數(shù)方面,jQuery的功能非常弱。為了改變這一點(diǎn),jQuery開發(fā)團(tuán)隊(duì)就設(shè)計(jì)了deferred對象。
簡單說,deferred對象就是jQuery的回調(diào)函數(shù)解決方案。在英語中,defer的意思是”延遲”,所以deferred對象的含義就是”延遲”到未來某個(gè)點(diǎn)再執(zhí)行。
它解決了如何處理耗時(shí)操作的問題,對那些操作提供了更好的控制,以及統(tǒng)一的編程接口。

b、它的主要功能,可以歸結(jié)為四點(diǎn):

(1)、實(shí)現(xiàn)鏈?zhǔn)讲僮?
(2)、指定同一操作的多個(gè)回調(diào)函數(shù)
(3)、為多個(gè)操作指定回調(diào)函數(shù)
(4)、普通操作的回調(diào)函數(shù)接口

41.什么是跨域,如何實(shí)現(xiàn)跨域訪問?

跨域是指不同域名之間相互訪問。
JavaScript同源策略的限制,A域名下的JavaScript無法操作B或是C域名下的對象

實(shí)現(xiàn):

(1)、JSONP跨域:利用script腳本允許引用不同域下的js實(shí)現(xiàn)的,將回調(diào)方法帶入服務(wù)器,返回結(jié)果時(shí)回調(diào)。
1 通過jsonp跨域

    1.原生實(shí)現(xiàn):






2.document.domain + iframe跨域  
    此方案僅限主域相同,子域不同的跨域應(yīng)用場景。
    1.父窗口:(http://www.domain.com/a.html)

 



  
        
            2.子窗口:(http://child.domain.com/b.html)
            
      

  
弊端:請看下面渲染加載優(yōu)化

1、 nginx代理跨域
2、 nodejs中間件代理跨域
3、 后端在頭部信息里面設(shè)置安全域名

(3)、跨域資源共享(CORS)
跨域資源共享(CORS)是一種網(wǎng)絡(luò)瀏覽器的技術(shù)規(guī)范,它為Web服務(wù)器定義了一種方式,允許網(wǎng)頁從不同的域訪問其資源。

CORS與JSONP相比:

a、JSONP只能實(shí)現(xiàn)GET請求,而CORS支持所有類型的HTTP請求。
b、使用CORS,開發(fā)者可以使用普通的XMLHttpRequest發(fā)起請求和獲得數(shù)據(jù),比起JSONP有更好的錯(cuò)誤處理。
c、JSONP主要被老的瀏覽器支持,它們往往不支持CORS,而絕大多數(shù)現(xiàn)代瀏覽器都已經(jīng)支持了CORS。
更多跨域的具體內(nèi)容請看 https://segmentfault.com/a/11...

42.為什么要使用模板引擎?

a.模板引擎(這里特指用于Web開發(fā)的模板引擎)是為了使用戶界面與業(yè)務(wù)數(shù)據(jù)(內(nèi)容)分離而產(chǎn)生的,它可以生成特定格式的文檔,用于網(wǎng)站的模板引擎就會生成一個(gè)標(biāo)準(zhǔn)的HTML文檔。
b.在一些示例中javascript有大量的html字符串,html中有一些像onclick樣的javascript,這樣javascript中有html,html中有javascript,代碼的偶合度很高,不便于修改與維護(hù),使用模板引擎可以解決問題。

43.根據(jù)你的理解,請簡述JavaScript腳本的執(zhí)行原理?

JavaScript是一種動態(tài)、弱類型、基于原型的語言,通過瀏覽器可以直接執(zhí)行。
當(dāng)瀏覽器遇到 恢復(fù)方法:javascript:alert(document.oncontextmenu="")

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/94264.html

相關(guān)文章

  • 前端面試總結(jié)——H5(持續(xù)更新

    摘要:前端面試題總結(jié)持續(xù)更新中為什么只需要寫需要來規(guī)范瀏覽器的行為讓瀏覽器按照它們應(yīng)該的方式來運(yùn)行基于所以需要對進(jìn)行引用,才能告知瀏覽器文檔所使用的文檔類型。 前端面試題總結(jié)——H5(持續(xù)更新中) 1.HTML5 為什么只需要寫 ? HTML5 需要doctype來規(guī)范瀏覽器的行為,讓瀏覽器按照它們應(yīng)該的方式來運(yùn)行; HTML4.01基于SGML,所以需要對DTD進(jìn)行引用,才能告知瀏覽器文檔...

    coolpail 評論0 收藏0
  • 前端最強(qiáng)面經(jīng)匯總

    摘要:獲取的對象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對象即使沒有代碼,也會把默認(rèn)的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個(gè)光禿禿的元素,方法返回對象中屬性值如果有就是據(jù)我測試不同環(huán)境結(jié)果可能有差異而就是。 花了很長時(shí)間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...

    wangjuntytl 評論0 收藏0
  • 前端最實(shí)用書簽(持續(xù)更新)

    摘要:前言一直混跡社區(qū)突然發(fā)現(xiàn)自己收藏了不少好文但是管理起來有點(diǎn)混亂所以將前端主流技術(shù)做了一個(gè)書簽整理不求最多最全但求最實(shí)用。 前言 一直混跡社區(qū),突然發(fā)現(xiàn)自己收藏了不少好文但是管理起來有點(diǎn)混亂; 所以將前端主流技術(shù)做了一個(gè)書簽整理,不求最多最全,但求最實(shí)用。 書簽源碼 書簽導(dǎo)入瀏覽器效果截圖showImg(https://segmentfault.com/img/bVbg41b?w=107...

    sshe 評論0 收藏0
  • 前端面試總結(jié)——VUE(持續(xù)更新

    摘要:前端面試題總結(jié)持續(xù)更新中是哪個(gè)組件的屬性模塊的組件。都提供合理的鉤子函數(shù),可以讓開發(fā)者定制化地去處理需求。 前端面試題總結(jié)——VUE(持續(xù)更新中) 1.active-class是哪個(gè)組件的屬性? vue-router模塊的router-link組件。 2.嵌套路由怎么定義? 在 VueRouter 的參數(shù)中使用 children 配置,這樣就可以很好的實(shí)現(xiàn)路由嵌套。 //引入兩個(gè)組件 ...

    SimonMa 評論0 收藏0

發(fā)表評論

0條評論

shery

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<