2020年WEB前端開發(fā)面試題最新整理(11-21)

11.已知數(shù)組var stringArray = [“This”, “is”, “Baidu”, “Campus”],Alert出”This is Baidu Campus”。

答案:alert(stringArray.join(" "))

那么問題來了,已知有字符串foo="get-element-by-id",寫一個(gè)function將其轉(zhuǎn)化成駝峰表示法"getElementById"。

function combo(msg){

var arr = msg.split("-");

var len = arr.length;? ? //將arr.length存儲(chǔ)在一個(gè)局部變量可以提高for循環(huán)效率

for(var i=1;i<len;i++){

arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);

}

msg=arr.join("");

return msg;

}

(考察基礎(chǔ)API)

12.var numberArray = [3,6,2,4,1,5]; (考察基礎(chǔ)API)

1) 實(shí)現(xiàn)對(duì)該數(shù)組的倒排,輸出[5,1,4,2,6,3]

2) 實(shí)現(xiàn)對(duì)該數(shù)組的降序排列,輸出[6,5,4,3,2,1]

var numberArray = [3,6,2,4,1,5];

numberArray.reverse(); // 5,1,4,2,6,3

numberArray.sort(function(a,b){? //6,5,4,3,2,1

return b-a;

})

13.輸出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,則輸出2014-09-26

var d = new Date();

// 獲取年,getFullYear()返回4位的數(shù)字

var year = d.getFullYear();

// 獲取月,月份比較特殊,0是1月,11是12月

var month = d.getMonth() + 1;

// 變成兩位

month = month < 10 ? '0' + month : month;

// 獲取日

var day = d.getDate();

day = day < 10 ? '0' + day : day;

alert(year + '-' + month + '-' + day);

14.將字符串”<tr><td>{$id}</td><td>{$name}</td></tr>”中的{$id}替換成10,{$name}替換成Tony (使用正則表達(dá)式)

答案:

"<tr><td>{$id}</td><td>{$id}_{$name}</td></tr>".replace(/{$id}/g, '10').replace(/{$name}/g, ‘Tony’);

15.為了保證頁面輸出安全,我們經(jīng)常需要對(duì)一些特殊的字符進(jìn)行轉(zhuǎn)義,請(qǐng)寫一個(gè)函數(shù)escapeHtml,將<, >, &, “進(jìn)行轉(zhuǎn)義

function escapeHtml(str) {

return str.replace(/[<>”&]/g, function(match) {

switch (match) {

case “<”:

return “<”;

case “>”:

return “>”;

case “&”:

return “&”;

case “\””:

return “"”;

}

});

}

16.foo = foo||bar ,這行代碼是什么意思?為什么要這樣寫?

答案:if(!foo) foo = bar; //如果foo存在,值不變,否則把bar的值賦給foo。

短路表達(dá)式:作為"&&"和"||"操作符的操作數(shù)表達(dá)式,這些表達(dá)式在進(jìn)行求值時(shí),只要最終的結(jié)果已經(jīng)可以確定是真或假,求值過程便告終止,這稱之為短路求值。

17.看下列代碼,將會(huì)輸出什么?(變量聲明提升)

var foo = 1;

function(){

console.log(foo);

var foo = 2;

console.log(foo);

}

答案:輸出undefined 和 2。上面代碼相當(dāng)于:

var foo = 1;

function(){

var foo;

console.log(foo); //undefined

foo = 2;

console.log(foo); // 2;?

}

函數(shù)聲明與變量聲明會(huì)被JavaScript引擎隱式地提升到當(dāng)前作用域的頂部,但是只提升名稱不會(huì)提升賦值部分。

18.用js實(shí)現(xiàn)隨機(jī)選取10--100之間的10個(gè)數(shù)字,存入一個(gè)數(shù)組,并排序。

var iArray = [];

funtion getRandom(istart, iend){

var iChoice = iend - istart +1;

return Math.floor(Math.random() * iChoice + istart);

}

for(var i=0; i<10; i++){

iArray.push(getRandom(10,100));

}

iArray.sort();

19.把兩個(gè)數(shù)組合并,并刪除第二個(gè)元素。

var array1 = ['a','b','c'];

var bArray = ['d','e','f'];

var cArray = array1.concat(bArray);

cArray.splice(1,1);

20.怎樣添加、移除、移動(dòng)、復(fù)制、創(chuàng)建和查找節(jié)點(diǎn)(原生JS,實(shí)在基礎(chǔ),沒細(xì)寫每一步)

1)創(chuàng)建新節(jié)點(diǎn)

createDocumentFragment() //創(chuàng)建一個(gè)DOM片段

createElement() //創(chuàng)建一個(gè)具體的元素

createTextNode() //創(chuàng)建一個(gè)文本節(jié)點(diǎn)

2)添加、移除、替換、插入

appendChild() //添加

removeChild() //移除

replaceChild() //替換

insertBefore() //插入

3)查找

getElementsByTagName() //通過標(biāo)簽名稱

getElementsByName() //通過元素的Name屬性的值

getElementById() //通過元素Id,唯一性

21.有這樣一個(gè)URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,請(qǐng)寫一段JS程序提取URL中的各個(gè)GET參數(shù)(參數(shù)名和參數(shù)個(gè)數(shù)不確定),將其按key-value形式返回到一個(gè)json結(jié)構(gòu)中,如{a:'1', b:'2', c:'', d:'xxx', e:undefined}。

答案:

function serilizeUrl(url) {

var result = {};

url = url.split("?")[1];

var map = url.split("&");

for(var i = 0, len = map.length; i < len; i++) {

result[map[i].split("=")[0]] = map[i].split("=")[1];

}

return result;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容