一、基础知识填空(每空1分,共24分)
1、JS中设置定时器的两种方法: setTimeout 、 setInterVal
2、函数中内置接收参数的集合是: arguments
3、把函数体中的某个值返回到外面用: return
4、数组的基础知识和应用
A、在数组的后面追加一项(至少两种办法): push 、 arr[arr.length]
B、删除数组的最后一项(至少两种办法): pop 、 arr.length—
C、克隆一份和原来一样的数组(至少两种): concat() 、 slice()
D、给数组var arr=[{n:1},{n:3},{n:9},{n:2},{n:8},]按照n属性从大到小排序:
arr.sort((a,b)=>{
return a.n-b.n;
})
E、实现找到第n项到第m项(包括n和m)的内容,返回一个新的数组(原有数组不变): arr.slice(n,m+1);
5、Math、Date常用的方法
获取n~m之间的随机整数: Math.round(Math.random()*(m-n)+n)
小数向上取整、向下取整的方法是什么: Math.ceil() 、 Math.floor()
获取当前日期与时间:new Date().toLocaleString()
获取当前时间戳: new Date().getTime()
6、DOM操作方法
获取元素所有的子节点: childNodes
获取上一个哥哥元素节点(可以不兼容): previousElementSibling
动态创建一个div标签,并且把其添加到body的末尾位置: (2分)
var el=document.createElement(‘div’);
document.body.appendChild(el);
删除元素的方法: el.parentNode.removeChild(el)
7、描述普通函数与箭头函数的区别(2分)
1没有arguments
2.没有自己的this this是执行上下文的this
二、案例实践题
1、(12分)实现下面效果,点击右侧按钮,控制二维码的显示隐藏
/*
* btn:右侧的按钮元素
* codeImg:左侧的二维码图片盒子
*/
let btn=document.getElementById('btn');
let codeImg=document.getElementById('codeImg');
//向下完成你的代码
btn.onclick=function(){
var res=codeImg.style.display;
if(res===''||res==='block'){
codeImg.style.display='none';
}else{
codeImg.style.display='block';
}
}
2、(13分)编写函数实现下面功能
月底要给员工发工资,每个人底薪未知,根据缺勤和迟到天数,计算应发工资(不考虑五险一金和交税,年假等其他情况),规则如下:
没有缺勤和迟到时,有500元全勤奖;
没有缺勤,但有迟到,有200元全勤奖,迟到另外扣钱;
缺勤一天扣250元,迟到一天扣50元;(12分)
function calculation() {
}
calculation(5000,2,5)
//第一个参数为底薪,第二个参数为缺勤天数,第三参数为迟到天数,计算应发工资并返回
3、(12分)编写函数,实现传入的英文语句首字母大写。
每句用英文句号.结束。
function firstLetterUpper(str) {
return (str.split('.').map(item=>{
return item.substring(0,1).toUpperCase()+item.substring(1);
})).join('.');
}
firstLetterUpper('i want to eat noodles.')
//=>'I want to eat noodles.'
firstLetterUpper('hello,my name is Wincy.i am 13 years old.')
//=>'Hello,my name is Wincy.I am 13 years old.'
4、(14分)页面中有三个按钮,点击每一个按钮让#box的背景颜色,改变为数组中对应的某种颜色
<body>
<div id='box' style='background:red;'></div>
<button>红</button>
<button>绿</button>
<button>蓝</button>
<button>黑</button>
</body>
<script>
var btnlist=document.querySelectorAll('button'),
box=document.querySelector("#box");
var arr=['red','green','blue','black']
for (var i = 0; i < btnlist.length; i++) {
btnlist[i].myIndex=i;
btnlist[i].onclick=function(){
box.style.background=arr[this.myIndex];
}
}
</script>
5、(15分)做一个抽奖程序,
页面中有一个区域显示中奖人员的编号,在JS中写一段代码,要求每隔1秒中随机创建一个四位的数字(每一位数字的取值范围0-9),当10秒结束后,结束定时器,最后显示的四位数字即是中奖的号码,将后面四个四位数以red展示
6、(10分)斐波那切数列。
实现一个fibonacci 函数,实现以下的功能:
斐波那契数列为:[1,1,2,3,5,8,13,21,…]
前两项固定为1,从第三项开始为前两项相加的和;2=1+1;3=2+1;5=3+2……
执行fibonacci时的传参为索引,返回斐波那契数列中该索引的对应项
function fibonacci(i) {
if (i < 2) return 1;
var ary = [1, 1]
for (var a = 2; a <= i; a++) {
ary[a] = ary[a - 1] + ary[a - 2]
}
return ary[i]
}
function fibonacci(n) {
if (n === 0 || n === 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
fibonacci(0) //-> 1
fibonacci(4) //-> 5
fibonacci(8) //-> 34