前端開發(fā)面試題總結(jié)之——JAVASCRIPT(二)


相關(guān)知識點

數(shù)據(jù)類型丹拯、運算站超、對象、function咽笼、繼承顷编、閉包、作用域剑刑、原型鏈媳纬、事件双肤、RegExp、JSON钮惠、Ajax茅糜、DOM、BOM素挽、內(nèi)存泄漏蔑赘、跨域、異步加載预明、模板引擎缩赛、前端MVC、前端MVVM撰糠、路由酥馍、模塊化、Http阅酪、Canvas旨袒、jQuery、ECMAScript 2015(ES6)术辐、Node.js砚尽、AngularJS、Vue辉词、React......

題目&答案

  • documen.write和 innerHTML的區(qū)別
document.write只能重繪整個頁面
innerHTML可以重繪頁面的一部分
  • 瀏覽器檢測通過什么必孤?
(1) navigator.userAgent
(2) 不同瀏覽器的特性,如addEventListener
  • JavaScript有哪幾種數(shù)據(jù)類型瑞躺?
簡單隧魄,Number,Boolean隘蝎,String购啄,Null,Undefined
復(fù)合嘱么,Object狮含,Array,F(xiàn)unction
  • 截取字符串“abcdefghi”的“fghi”
var myvalue=”abcdefghi”;
var jiequ=myvalue.substring(myvalue.length-4,myvalue.length);
alert(jiequ);

-寫出下面的運算結(jié)果

alert(typeof(null)); // object
alert(typeof(undefined)); // undefined
alert(typeof(NaN)); // number
alert(NaN==undefined); // false
alert(NaN==NaN); // false
var str="123abc";
alert(typeof(str++)); // number
alert(str);// NaN
  • 問執(zhí)行完畢后 x, y, z 的值分別是多少曼振?
var x = 1, y = z = 0;
function add(n) {
    n = n+1;
}
y = add(x);
function add(n) {
    n = n + 3;
}
z = add(x);
1几迄、undefined须误、undefined
  • 如何阻止事件的冒泡?
//阻止冒泡的方法
function stopPP(e)
{
    var evt = e|| window.event;
    //IE用cancelBubble=true來阻止而FF下需要用stopPropagation方法
    evt.stopPropagation ?evt.stopPropagation() : (evt.cancelBubble=true);
}
  • 寫出程序運行的結(jié)果?
for(var i=0, j=0; i<10, j<6; i++, j++){
    k = i + j;
}
10
  • 編寫一個方法 求一個字符串的字節(jié)長度
/*假設(shè):一個英文字符占用一個字節(jié)昌妹,一個中文字符占用兩個字節(jié)*/
function getBytes(str){
    var len = str.length,
        bytes = len,
        i = 0;
    for(; i<len; i++){
        if (str.charCodeAt(i) > 255) bytes++;
    }
    return bytes;
}
alert(getBytes("玩,as"));
  • JavaScript中如何對一個對象進行深度clone茸时?
function cloneObject(o) {
    if(!o || 'object' !== typeof o) {
        return o;
    }
    var c = 'function' === typeof o.pop ? [] : {};
    var p, v;
    for(p in o) {
        if(o.hasOwnProperty(p)) {
            v = o[p];
            if(v && 'object' === typeof v) {
                c[p] = Ext.ux.clone(v);
            }
            else {
                c[p] = v;
            }
        }
    }
    return c;
};
  • 如何控制alert中的換行令境?
\n alert(“p\np”);
function parseQueryString(url){
    var params = {},
        arr = url.split("?");
    if (arr.length <= 1)
        return params;
    arr = arr[1].split("&");
    for(var i=0, l=arr.length; i<l; i++){
        var a = arr[i].split("=");
        params[a[0]] = a[1];
    }
    return params;
}
var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2",
    ps = parseQueryString(url);
console.log(ps["key1"]);
  • 如何控制網(wǎng)頁在網(wǎng)絡(luò)傳輸過程中的數(shù)據(jù)量?
啟用GZIP壓縮
保持良好的編程習(xí)慣回还,避免重復(fù)的CSS双戳,JavaScript代碼,多余的HTML標(biāo)簽和屬性
  • 以下代碼運行結(jié)果
function say() {
    // Local variable that ends up within closure
    var num = 888;
    var sayAlert = function() { alert(num); }
    num++;
    return sayAlert;
}
var sayAlert = say();
sayAlert();//889
  • 請實現(xiàn)ECMAScript 5中的Object.getPrototypeOf() 函數(shù)
function proto(object) {
    return !object?                null
        : '__proto__' in object?  object.__proto__
        : /* not exposed? */      object.constructor.prototype
}
  • 如何實現(xiàn)Array.prototype.forEach弛姜?
if (!Array.prototype.forEach) {
    Array.prototype.forEach = function(fn){
        for ( var i = 0; i < this.length; i++ ) {
            fn( this[i], i, this );
        }
    };
}
["a", "b", "c"].forEach(function(value, index, array){
    assert( value, "Is in position " + index + " out of " + (array.length - 1) );
});
  • 如何將arguments轉(zhuǎn)為數(shù)組脐瑰?
Object.prototype.slice.call(arguments);
  • 以下程序運行結(jié)果?
var ninja = function myNinja(){
    alert(ninja == myNinja);
};
ninja();
myNinja();
true廷臼、報錯(error - myNinja is not defined.)
  • 如何獲取光標(biāo)的水平位置苍在?
function getX(e){
    e = e || window.event;
    //先檢查非IE瀏覽器,在檢查IE的位置
    return e.pageX || e.clentX + document.body.scrollLeft;
}
  • 兼容瀏覽器的獲取指定元素(elem)的樣式屬性(name)的方法
function getStyle(elem, name){
    if(elem.style[name]){//如果屬性存在于style[]中荠商,直接取
        return elem.style[name];
}
else if(elem.currentStyle){//否則 嘗試IE的方法
        return elem.currentStyle[name];
}//嘗試W3C的方式
else if(document.defaultView && document.defaultView.getComputedStyle){ 
        name = name.replace(/([A-Z])/g, "-$1");//W3C中為textAlign樣式寂恬,轉(zhuǎn)為text-align
        name = name.toLowerCase();
        var s = document.defaultView.getComputedStyle(elem, "");
        return s && s.getPropertyValue(name);
    }else{
        return null;
    }
}
  • Javascript中實現(xiàn)類似PHP的print_r函數(shù)
function print_r(theObj) {
    var retStr = '';
     if(typeof theObj == 'object') {
          retStr += '<div style="font-family:Tahoma; font-size:7pt;">';
          for(var p in theObj) {
                if (typeof theObj[p] == 'object') {
                      retStr += '<div><b>['+p+'] => ' + typeof(theObj) + '</b></div>';
                      retStr += '<div style="padding-left:25px;">' +  print_r(theObj[p]) + '</div>';
                } else {
                      retStr += '<div>['+p+'] => <b>' + theObj[p] +  '</b></div>';
                }  
           }
          retStr += '</div>';
      }
      return  retStr;
}
  • 以下程序運行結(jié)果?
var b = parseInt("01");
alert("b="+b);
var c = parseInt("09/08/2009");
alert("c="+c);
b=1莱没、c=0掠剑。
  • 以下程序的運行結(jié)果?
var foo = 'hello';
(function() {
       var foo= foo || 'world';
       console.log(foo);
})();
world
  • 如何規(guī)避javascript多人開發(fā)函數(shù)重名問題郊愧?
(1) 可以開發(fā)前規(guī)定命名規(guī)范,根據(jù)不同開發(fā)人員開發(fā)的功能在函數(shù)前加前綴
(2) 將每個開發(fā)人員的函數(shù)封裝到類中井佑,調(diào)用的時候就調(diào)用類的函數(shù)属铁,即使函數(shù)重名只要類名不重復(fù)就行
  • 前端開發(fā)有哪些優(yōu)化問題?
減少http請求次數(shù):cssspirit,data uri
JS躬翁,CSS源碼壓縮
前端模板JS+數(shù)據(jù)焦蘑,減少由于HTML標(biāo)簽導(dǎo)致的帶寬浪費,前端用變量保存AJAX請求結(jié)果盒发,每次操作本地變量例嘱,不用請求,減少請求次數(shù)
用innerHTML代替DOM操作宁舰,減少DOM操作次數(shù)拼卵,優(yōu)化javascript性能
用setTimeout來避免頁面失去響應(yīng)
用hash-table來優(yōu)化查找
當(dāng)需要設(shè)置的樣式很多時設(shè)置className而不是直接操作style
少用全局變量
緩存DOM節(jié)點查找的結(jié)果
避免使用CSS Expression
圖片預(yù)載
避免在頁面的主體布局中使用table,table要等其中的內(nèi)容完全下載之后才會顯示出來蛮艰,顯示比div+css布局慢
  • AJAX請求總共有多少種CALLBACK
Ajax請求總共有八種Callback
onSuccess
onFailure
onUninitialized
onLoading
onLoaded
onInteractive
onComplete
onException
  • 請給出異步加載js方案腋腮,不少于兩種
異步加載方式:
defer,只支持IE
async:
創(chuàng)建script著蟹,插入到DOM中墩蔓,加載完畢后callBack梢莽,見代碼:
function loadScript(url, callback){
      var script = document.createElement("script")
      script.type = "text/javascript";
      if(script.readyState){ //IE
          script.onreadystatechange = function(){
               if (script.readyState == "loaded" ||script.readyState == "complete"){
                      script.onreadystatechange = null;
                      callback();
               }
         };
     } else {
//Others: Firefox, Safari, Chrome, and Opera
         script.onload = function(){
            callback();
         };
    }
    script.src = url;
    document.body.appendChild(script);
}

相關(guān)系列:
前端開發(fā)面試題總結(jié)之——HTML
前端開發(fā)面試題總結(jié)之——CSS3
前端開發(fā)面試題總結(jié)之——JAVASCRIPT(一)
前端開發(fā)面試題總結(jié)之——JAVASCRIPT(三)

以上所有資料來源于網(wǎng)絡(luò),如有不對的地方钢拧,還請及時告知蟹漓,歡迎大家批評指正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末源内,一起剝皮案震驚了整個濱河市葡粒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膜钓,老刑警劉巖嗽交,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颂斜,居然都是意外死亡夫壁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門沃疮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盒让,“玉大人,你說我怎么就攤上這事司蔬∫厍眩” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵俊啼,是天一觀的道長肺缕。 經(jīng)常有香客問我,道長授帕,這世上最難降的妖魔是什么同木? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮跛十,結(jié)果婚禮上彤路,老公的妹妹穿的比我還像新娘。我一直安慰自己芥映,他們只是感情好斩萌,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屏轰,像睡著了一般颊郎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霎苗,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天姆吭,我揣著相機與錄音,去河邊找鬼唁盏。 笑死内狸,一個胖子當(dāng)著我的面吹牛检眯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昆淡,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锰瘸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昂灵?” 一聲冷哼從身側(cè)響起避凝,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眨补,沒想到半個月后管削,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡撑螺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年含思,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甘晤。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡含潘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出线婚,到底是詐尸還是另有隱情遏弱,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布酌伊,位于F島的核電站,受9級特大地震影響缀踪,放射性物質(zhì)發(fā)生泄漏居砖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一驴娃、第九天 我趴在偏房一處隱蔽的房頂上張望奏候。 院中可真熱鬧,春花似錦唇敞、人聲如沸蔗草。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咒精。三九已至,卻和暖如春旷档,著一層夾襖步出監(jiān)牢的瞬間模叙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工鞋屈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留范咨,地道東北人故觅。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像渠啊,于是被迫代替她去往敵國和親输吏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容