js、jquery面試題總結


1.javascript的typeof返回哪些數據類型.
答案:string,boolean,number,undefined,function,object

檢測數據數據類型的方式 
2.例舉3種強制類型轉換和2種隱式類型轉換?
答案:強制(parseInt,parseFloat,number)
隱式(== ===) 還有判斷是null “” undefined 0 會轉換成false 1會轉換成true
3.split() join()的區別
答案:前者是將字符串切割成數組的形式,后者是將數組轉換成字符串
4.數組方法pop()push()unshift()shift()
答案:push()尾部添加pop()尾部刪除
unshift()頭部添加shift()頭部刪除
5.IE和標准下有哪些兼容性的寫法
答案:
var ev=ev||window.event
document.documentElement.clientWidth||document.body.clientWidth
Vartarget=ev.srcElement||ev.target

var scrollTop = windows.scrollTop || document.documentElement.scrollTop

6.ajax請求的時候get和post方式的區別
答案:
一個在url后面,一個放在虛擬載體里面
get有大小限制(只能提交少量參數)
安全問題
應用不同,請求數據和提交數據
7.call和apply的區別
答案:
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
1
2
8.ajax請求時,如何解析json數據
答案:使用JSON.parse  
9.事件委托是什么
答案:利用事件冒泡的原理,讓自己的所觸發的事件,讓他的父元素代替執行!
10.閉包是什么,有什么特性,對頁面有什么影響
答案:閉包就是能夠讀取其他函數內部變量的函數,使得函數不被GC回收,如
果過多使用閉包,容易導致內存泄露
11.如何阻止事件冒泡
答案:ie:阻止冒泡ev.cancelBubble=true;非IEev.stopPropagation();
12.如何阻止默認事件
答案:(1)return false;(2)ev.preventDefault(); (3)IE兼容寫法 e.returnValue = false;
13.添加刪除替換插入到某個接點的方法
答案:
1)創建新節點
createElement()//創建一個具體的元素
createTextNode()//創建一個文本節點
2)添加、移除、替換、插入
appendChild()//添加
removeChild()//移除
replaceChild()//替換
insertBefore()//插入 每個元素的前面增加
3)查找
getElementsByTagName()//通過標簽名稱
getElementsByName()//通過元素的Name屬性的值
getElementById()//通過元素Id,唯一性
14.解釋jsonp的原理,以及為什么不是真正的ajax
答案:動態創建script標簽,回調函數
Ajax是頁面無刷新請求數據操作
15.window.load和document.ready的區別
答案:window.onload是在結構和樣式,外部js以及圖片加載完(即頁面加載完成之后)才執行js
document.ready是dom樹創建完成就執行(即documnet文檔加載完成)的方法,原生種沒有這個方法,
jquery中有$().ready(function)
16.””和“=”的不同
答案:前者會自動轉換類型,再判斷是否相等
后者不會自動類型轉換,直接去比較 (=是賦值運算符)
17.函數聲明與函數表達式的區別?
在Javscript中,解析器在向執行環境中加載數據時,對函數聲明和函數表達式
並非是一視同仁的,解析器會率先讀取函數聲明,並使其在執行任何代碼之前可
用(可以訪問),至於函數表達式,則必須等到解析器執行到它所在的代碼行,
才會真正被解析執行。
18.對作用域上下文和this的理解,看下列代碼:
varUser={
count:1,
getCount:function(){
returnthis.count;
}
};
console.log(User.getCount());//this指向的是當前對象
varfunc=User.getCount;//func是一個普通函數了
console.log(func());//普通函數的this指向是windows,局部變量沒有定義返回undefined
問兩處console輸出什么?為什么?
答案:是1和undefined。
func是在window的上下文中被執行的,所以不會訪問到count屬性。
19.看下面代碼,給出輸出結果。
for(vari=1;i<=3;i++){//建議使用let可正常輸出i的值
setTimeout(function(){
console.log(i);
},0);//定時器在for循環之后運行。
};

答案:444。
原因:Javascript事件處理器在線程空閑之前不會運行。
20.當一個DOM節點被點擊時候,我們希望能夠執行一
個函數,應該怎么做?
box.onclick=function(){}
box.addEventListener("click",function(){},false);//二級事件,可以綁定多個事件

box.attachEvent()//IE兼容 綁定事件


21.Javascript的事件流模型都有什么?
“事件冒泡”:事件開始由最具體的元素接受,然后逐級向上傳播
“事件捕捉”:事件由最不具體的節點先接收,然后逐級向下,一直到最具體的
“DOM事件流”:三個階段:事件捕捉,目標階段,事件冒泡
22.看下列代碼,輸出什么?解釋原因。
var a=null;
alert(typeofa);
1
2
答案:object
解釋:null是一個只有一個值的數據類型,這個值就是null。表示一個空指針對
象,所以用typeof檢測會返回”object”。
23.判斷字符串以字母開頭,后面可以是數字,下划線,
字母,長度為6-30
varreg=/^[a-zA-Z]\w{5,29}$/;
1
24.回答以下代碼,alert的值分別是多少?
<script>
var a=100;
functiontest(){
alert(a);
a=10;//去掉了var就變成定義了全局變量了
alert(a);
}
test();
alert(a);
</script>

 

 

擴展:

1.檢測數據類型的方式案例object.prototype.toString.call()
(1)typeof(該變量) 返回數據類型    (2)instantofvar arr = []; arr instanceof Array    返回true和false
(3)curstructor var arr = []; arr.constructor === Array;返回true和false (4)object.prototype.toString.call()
⒉數組的常用方法字符串常用方法 join split splice slice區別
(1)、slice  slice() 可用於數組與字符串,返回一個新的數組,原數組不改變,包含從 start 到 end (不包括該元素)的元素。返回一個新的數組,
start 必需。規定從何處開始選取。如果是負數,那么它規定從數組尾部開始算起的位置。
end  可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那么切分的數組包含從 start 到數組結束的所有元素。如果這個參數是負數,那么它規定的是從數組尾部開始算起的元素。
(2)、splice  splice()方法向/從數組中添加/刪除項目,然后返回被刪除的項目。會改變原始數組。它可以用於插入、刪除或替換數組的元素。
參數至少兩個,index為必選項,表示操作數組的起始位置,負數表示從倒數開始。
howmany為必選項,表示從起始位置開始要替換或刪除幾個元素。如果設置為 0,則不會刪除項目。
第三個及以上 item(包括item1、item2...)可選。向數組添加的新項目。有則替換沒有則表示刪除。
(3)、split 用於把一個字符串分割成字符串數組,可用於數組與字符串,返回一個字符串數組。
split(separator,howmany)separator是必選項。表示分割字符串的符號。howmany為可選項,表示分割后返回的結果長度。
(4)、join(separator) 方法用於把數組中的所有元素放入一個字符串
separator 可選。指定要使用的分隔符。如果省略該參數,則使用逗號作為分隔符。
3.阻止事件的冒泡兼容寫法
    if(document.all){  //只有ie識別
        e.cancelBubble=true;
    }else{
        e.stopPropagation();
    }
4.addEventListener綁定事件的參數,附帶案例attachEvent
addEventListener("click",function(){},true);
第一個參數是事件類型
第二個參數就是事件函數
第三個參數 true時捕獲,false時冒泡。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM