阿里前端笔试题2
1.寫一個(gè)求和的函數(shù)sum,達(dá)到下面的效果
// Should equal 15 sum(1, 2, 3, 4, 5); // Should equal 0 sum(5, null, -5); // Should equal 10 sum('1.0', false, 1, true, 1, 'A', 1, 'B', 1, 'C', 1, 'D', 1,'E', 1, 'F', 1, 'G', 1); // Should equal 0.3, not 0.30000000000000004 sum(0.1, 0.2);(1) parseFloat()函數(shù)將字符串轉(zhuǎn)換成浮點(diǎn)數(shù);
paseFloat(String)
如:window.parseFloat("-2");//返回-2
? parseInt()函數(shù)將字符串轉(zhuǎn)換為整數(shù)
如:window.parseInt("3.5");//返回3
window.parseInt("bar");//返回NaN,意思就是不能轉(zhuǎn)換為數(shù)字
window.parseInt("1010",2);//返回10,這個(gè)就是二進(jìn)制的轉(zhuǎn)換
(2)toFixed()函數(shù)
1. toFixed(n) 限制小數(shù)點(diǎn)后位數(shù),四舍五入。n:0~20 。
2.?作用對(duì)象必須是number,不能為其他類型。如(8.001).toFixed(2)返回8.00;
3. toFixed(n)返回值是String類型,所有當(dāng)成數(shù)字進(jìn)行比大小是錯(cuò)誤的。
4. parseFloat(“number“)與parseInt("number")讀取字符串中第一個(gè)遇到的數(shù)(如91.2w3 第一個(gè)數(shù)為91.2)并轉(zhuǎn)換為float或int,返回類型為number.
如:
var a0 = 8.01.toFixed();var a1 = parseFloat("8.006").toFixed(2);var a2 = parseFloat("9.091").toFixed(2);a0,a1,a2的類型都是string
(3)Arguments類和arguments屬性(是javascript的內(nèi)置類)
Arguments類是用于存儲(chǔ)和訪問函數(shù)的參數(shù),它位于函數(shù)體內(nèi)部,可以使用Function類的arguments屬性對(duì)其進(jìn)行訪問。
Arguments類代表的這些參數(shù)作為數(shù)組元素存儲(chǔ),所以就進(jìn)行這樣的訪問,第一個(gè)參數(shù)就是arguments[0],第二個(gè)arguments[1]....
arguments.length屬性表示傳遞給函數(shù)的參數(shù)數(shù)目,但是,傳遞給函數(shù)的參數(shù)與該函數(shù)聲明的參數(shù)的數(shù)目可能不同。下面的代碼就是這么做的。
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>求和</title><script type="text/javascript">function sum() {var nResult = 0;for (var i = 0, len = arguments.length; i < len; i++) {nResult += window.parseFloat(arguments[i]) || 0;}return nResult.toFixed(3) * 1000 / 1000;}console.log(sum(1,2,3,4,5));console.log(sum(5,null,-5));console.log(sum('1.0', false, 1, true, 1, 'A', 1, 'B', 1, 'C', 1, 'D', 1,'E', 1, 'F', 1, 'G', 1));console.log(sum(0.1,0.2));</script> </head> <body></body> </html>
上面的代碼,
window.parseFloat(arguments[i]) || 0??? parseFloat的結(jié)果要么為一個(gè)小數(shù),要么為NaN,||運(yùn)算如果前一個(gè)為真則不計(jì)算后一個(gè),直接返回前一個(gè)表達(dá)式的值,如果是NaN則返回后一個(gè)表達(dá)式的值; nResult.toFixed(3) * 1000 / 1000 這個(gè)是在做:保留三位小數(shù),并且去掉末尾的0,最后一位會(huì)進(jìn)行四舍五入。2. 請(qǐng)寫一個(gè)表格以及對(duì)應(yīng)的CSS,使表格奇數(shù)行為白色背景,偶數(shù)行為灰色背景,鼠標(biāo)移上去時(shí)為黃色背景。
通過for循環(huán)遍歷,然后
trs[i].className=(i%2==0)?'even':'odd';
來判定是奇數(shù)行還是偶數(shù)行
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>奇偶行變色</title><style type="text/css">tr{text-align: center;}.even{background-color:grey;}.odd{background-color: white;}.ye{background-color: yellow;}</style><script type="text/javascript">window.οnlοad=function(){var tab=document.getElementById('t1');var tbody=tab.getElementsByTagName('tbody')[0];var trs=tbody.getElementsByTagName('tr');for(var i=0;i<trs.length;i++){trs[i].className=(i%2==0)?'even':'odd';//鼠標(biāo)移上去會(huì)變黃色trs[i].οnmοuseοver=function(){this.className='ye';}trs[i].οnmοuseοut=function(){this.className=' ';}}}</script> </head> <body><div style="margin:10px 0;"><table id="t1" style="width:500px;height:auto"><thead><tr style="background-color:#00ae9d"><td>序號(hào)</td> ? <td>姓名</td> ?<td>年齡</td> ? </tr><thead><tbody> ? <tr><td>1</td><td>張三</td><td>24</td></tr> ? <tr> ? <td>2</td> ? <td>李逵</td> ? <td>38</td> ? </tr> ? <tr> ? <td>3</td> ? <td>林沖</td> ? <td>43</td> ? </tr> ? </tbody></table></div> </body> </html>3. 寫一個(gè)traverse函數(shù),輸出所有頁面寬度和高度大于50像素的節(jié)點(diǎn)。
(1)在DOM中,HTML文檔的各個(gè)節(jié)點(diǎn)被視為各種類型的Node對(duì)象,并且將HTML文檔表示為Node對(duì)象的樹。對(duì)于任何一個(gè)樹形結(jié)構(gòu)來說,最常做的就是遍歷樹。在DOM中,可以通過parentNode,firstChild,nextChild,lastChild,childNodes(節(jié)點(diǎn)所有的子節(jié)點(diǎn))等屬性來遍歷文檔樹。
(2)concat用于數(shù)組的連接。
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>轉(zhuǎn)換</title><script type="text/javascript">function traverse(oNode){var aResult=[];var oNode=oNode||doucment.body;if(oNode.style){var nWidth=window.parseInt(oNode.style.width,10)||0;var nHeight=window.parseInt(oNode.style.height,10)||0;if(nWidth>50 && nHeight>50){aResult.push(oNode);}}var aChildNodes=oNode.childNodes;if (aChildNodes.length>0) {for(var i=0,len=aChildNodes.length;i<len;i++){var oTemp=aChildNodes[i];aResult=aResult.concat(traverse(oTemp));}}return aResult;}</script> </head> <body></body> </html>
轉(zhuǎn)載于:https://www.cnblogs.com/GumpYan/p/5841420.html
總結(jié)
- 上一篇: UVa10943
- 下一篇: 利用HTML5的devicemotion