JS笔试面试题(后续更新)
Posted 倾城一笑stu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS笔试面试题(后续更新)相关的知识,希望对你有一定的参考价值。
1. 下面代码的运行结果是?
var length = 10;
function fn()
console.log(this.length);
var obj =
length: 5,
method: function(fn)
fn();
arguments[0]();
obj.method(fn, 1);
答案:10 2
解析:首先,fn()执行时的this是指向window的,因为这个函数是作普通函数调用的,普通函数调用,this指向window。然后arguments代指实参数组,即 [function fn()console.log(this.length); , 1] ,然后这里的this是指这个数组,不是指window。所以调用arguments[0]()时,会打印这个数组的长度,即2.
2. 【百度2017实习生笔试题】填充calendar函数代码,使得页面的显示效果为下图:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS写简单日历</title>
<style type="text/css">
body,htmlpadding: 0;margin: 0;font-size: 14px;color:#000;
table border-collapse: collapse;width: 100%;table-layout: fixed;
/*border-collapse: collapse;为表格设置合并边框模型*/
td,th border: 1px solid #e1e1e1;padding: 0;height: 30px;line-height: 30px;text-align: center;
thbackground: blue
.currentcolor:red;
</style>
</head>
<body id="body">
<table>
<thead>
<tr><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th><th>日</th></tr>
</thead>
<tbody>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
</tbody>
</table>
<script type="text/javascript">
function calendar(year, month)
calendar(2017,6)
</script>
</body>
</html>
即做一个小日历,如果是当前日期,则給单元格加红。
答案:
function calendar(year, month)
var bLeap = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
var nCount = [0, 31, bLeap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || 0;
var nStart = new Date(year, month - 1, 1).getDay(); //获取1号是周几
nStart = (nStart - 1 + 7) % 7; //从第几个位置开始填充
// 当前
var oNow = new Date();
var nNowDate = oNow.getDate();//当前日期
var bCurrent = oNow.getFullYear() === year && oNow.getMonth() + 1 === month;//判断是不是当前年份和月份
// 渲染
var aTd = [].slice.call(document.getElementsByTagName('td'), 0);
var nVal = 1; //从1开始算法
aTd.forEach(function (oTd, nIndex)
oTd.className = bCurrent && nVal === nNowDate ? 'current' : '';
if (nIndex >= nStart && nVal <= nCount)
oTd.innerHTML = nVal;
nVal++;
else
oTd.innerHTML = '';
);
以上是关于JS笔试面试题(后续更新)的主要内容,如果未能解决你的问题,请参考以下文章