# web前端javascript综合水平测试

## 填空
1. javascript 由    ，   ，   ，三部分组成，简单介绍一下这三部分
2. 检测数据类型的方式有    ，     ，     ，  三种方式什么区别
3. 检测NaN的数据类型结果为    
4. js中 对象转json的方法为   ， json格式转对象的方法为   
5. js 浏览器对象模型包括    ，    ，    ，   ，  ，五部份 分别介绍一下这5部分
6. var a=1;console.log(a++) 运行的结果为：  
7. js运算符的优先级
8. js设置属性和属性值的方法为
9. 五大主流浏览器及内核
10. jq ajax基本结构及解释
11. 本地缓存的增删改查
12. jq选择器列举
    
## 指出下面代码运行结果并分析其执行过程

1 . 
```
 function a(n) {
            if (n <= 1) {
                return 1
            } else {
                return n * a(n - 1)
            }
        }
        console.log(a(5))

        var cheng=a
        a=null
        console.log(cheng(5))

```
2 

```
function C1(name) {
        if (name) {
            this.name = name;
        }
    }

function C2(name) {
        this.name = name;
    }

function C3(name) {
        this.name = name || 'join';
    }
C1.prototype.name = 'Tom';
C2.prototype.name = 'Tom';
C3.prototype.name = 'Tom';
alert((new C1().name) + (new C2().name) + (new C3().name));

```

3
```
function fn()  
{  
    this.user = '追梦子'; 
    var obj={user:"momo"}
    return {};  
}
var a = new fn;  
console.log(a.user);

```

4

```
 window.color = 'red';
        document.color = 'yellow';

        var s1 = {color: 'blue' };
        function changeColor(){
            console.log(this.color);
        }

        changeColor.call();       
        changeColor.call(window);  
        changeColor.call(document); 
        changeColor.call(this);     
        changeColor.call(s1);      


```

## 简答题
1. 说明call,apply,bind 的区别几个






2. js的typeof的返回值有哪些





3. 说出数组相关的几个方法并说明作用





4. ajax请求时的get、post的区别





5. 如何阻止浏览器的默认事件




6. 如何阻止事件冒泡





7. == 和===的区别




8. 局部变量和全局变量的区别





## 通过代码实现下面要求
1. 通过原型链实现对象继承








2. js手动实现 jq的链式操作







3. 做一个网页计算器  实现输入两个数 完成加减乘除四则运算





4. 实现一个打点计时器，要求
    1、从 start 到 end（包含 start 和 end），每隔 100 毫秒 console.log 一个数字，每次数字增幅为 1（start 和end为用户输入）
    2、返回的对象中需要包含一个 cancel 方法，用于停止定时操作






5. 在页面上将下面的json数据，需要放到表格里
json数据为：
[{"title":"史莱姆1号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},{"title":"史莱姆2号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05},{"title":"史莱姆3号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},{"title":"史莱姆4号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},{"title":"史莱姆5号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05}]

注： title对应文章标题，auth 对应的是作者 ， contnet对应的是简介  date对应的是日期









6. 实现 fizzBuzz 函数，参数 num 与返回值的关系如下：
1、如果 num 能同时被 3 和 5 整除，返回字符串 fizzbuzz
2、如果 num 能被 3 整除，返回字符串 fizz
3、如果 num 能被 5 整除，返回字符串 buzz
4、如果参数为空或者不是 Number 类型，返回 false
5、其余情况，返回参数 num
