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;
}