一、基础知识填空(每空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属性从大到小排序:

  1. arr.sort((a,b)=>{
  2. return a.n-b.n;
  3. })

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分)实现下面效果,点击右侧按钮,控制二维码的显示隐藏

image.png

/*
* 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展示
第二周考试补考二 - 图2

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