考试题

This commit is contained in:
asd
2021-04-01 09:06:07 +08:00
parent 9bf8e8d020
commit 71190d870d
47 changed files with 3570 additions and 239 deletions

View File

@@ -0,0 +1,326 @@
# web前端javascript综合水平测试
## 填空
1. javascript 由 ECMAscriptDOM BOM ,三部分组成,简单介绍一下这三部分
ECMAscript :javascript 的核心描述了js基本语法和数据类型是一套 标准
DOM: 文档对象模型dom通过节点树来创建文档使开发者对文档节点控制力提高
BOM: 对浏览器窗口的访问和操作
2. 检测数据类型的方式有 typeof instanceof Object.prototype.toString.call() 三种方式什么区别
区别typeof 可以对JS基本数据类型做出准确的判断除了null而对于引用类型返回的基本上都是objec
instanceof判断对象和构造函数在原型链上是否有联系如果有返回true 没有返回false
toString是Object原型对象上的一个方法该方法默认返回其调用者的具体类型更严格的讲是 toString运行时this指向的对象类型, 返回的类型
格式为[object xxx],xxx是具体的数据类型
3. 检测NaN的数据类型结果为 number
4. js中 对象转json的方法为 JSON.stringfy() json格式转对象的方法为 JSON.parse()
5. js 浏览器对象模型包括 window location navigator history screen ,五部份 分别介绍一下这5部分
window 全局作用域
location 对窗口url的信息
navigator 提供浏览器信息
history 提供历史访问记录
screen 用户显示器相关信息
6. var a=1;console.log(a++) 运行的结果为: 1
7. js运算符的优先级 从高到低为: () > .,[] 函数调用() > 后置递增a++后置递减a-->逻辑非 ! + - 前置递增(++a) 前置递减(--a) typeof > * / % > - + > 小于 (<) 小于等于(<=) 大于(>) 大于等于(>=) in instanceof >等于(==) 非等于(!=) 全等(= = =) 非全等(!= =>&& || >?: >赋值相关>
8. js设置属性和属性值的方法为 setattribute()
9. 五大主流浏览器及内核
1、IE浏览器内核Trident内核也是俗称的IE内核
2、Chrome浏览器内核统称为Chromium内核或Chrome内核以前是Webkit内核现在是Blink内核
3、Firefox浏览器内核Gecko内核俗称Firefox内核
4、Safari浏览器内核Webkit内核
5、Opera浏览器内核最初是自己的Presto内核后来是Webkit现在是Blink内核
10. jq ajax基本结构及解释
$.ajax({
url:"" 请求地址
type:"" 请求方式
datatype:"" 后台返回的数据格式
success 回调函数
})
11. 本地缓存的增删改查
localstorage.setitem()
localstorage.getitem()
localstorage.clear()
localstorage.removeitem()
12. jq选择器列举
```
$("#id") $(".class") $("标签") $([属性]) $(A,B) ...
```
## 指出下面代码运行结果并分析其执行过程
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))
```
报错 cheng is not a function
a是个递归函数 cheng 等于a 执行到内部的时候会调用a(5-1) 但是这时候a 已经被赋值成null了
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));
```
Tomundefinedjoin
new c1 this指向 c1的实例对象没有传参就不执行 this.name的赋值 所以 取name的时候要从原型中取 即tom
c2 new的时候传得值为空 但是没有判断过直接赋值 所以 c2函数中的 this.name 就直接被赋值成了 undefined
c3函数中赋值的时候 判断了name参数是否为空 如果为空的话就赋成默认值 join
3
```
function fn()
{
this.user = '追梦子';
var obj={user:"momo"}
return {};
}
var a = new fn;
console.log(a.user);
```
undefined
new fn 的时候生成 的实例是fn的返回值 也就是{} 空对象
从空对象中找不到 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);
```
red
red
yellow
red
blue
call() 不加参数的时候 this指向window其他的参数是谁就指向谁
## 简答题
1. 说明call,apply,bind 的区别
bind 不会立即调用 而是返回一个新函数
call/apply 会立即调用 返回的是函数调用后的结果
call 传参数的时候 函数需要的参数可以一个一个传
apply 函数需要的参数只能写成类数组的形式 [a,b,c]
2. js的typeof的返回值有哪些
number, boolean, string, undefined, object, function,symbol.
3. 说出数组相关的几个方法并说明作用
push() 向数组最后面添加一个元素
pop() 删除数组最后面的元素 并返回这个被删除的值
shift() 删除第一个元素
unshift() 向数组开头添加一个元素
...
4. ajax请求时的get、post的区别
AJAX GET和POST的区别
**ajax** 请求的时候**get 和post** 方式的**区别**? **GET**请求会将参数跟在URL后进行传递而**POST**请求则是作为HTTP消息的实体内容发送给WEB服务器。 **GET**请求有数据长度限制,而**POST**没有。 **GET**方式请求的数据会被浏览器缓存起来,**POST**没有
5. 如何阻止浏览器的默认事件
```
event.preventDefault()
或 return false
```
6. 如何阻止事件冒泡
```
event.preventDefault()
或return false
```
7. == 和===的区别
== 只比较数值大小 不比较数据类型 会发生隐式类型转换
=== 不发生类型转换 会比较数据类型
8. 局部变量和全局变量的区别
全局变量是整个程序都可访问的变量,生存期从程序开始到程序结束;局部变量存在于模块中(比如某个函数),只有在模块中才可以访问,生存期从模块开始到模块结束。
全局变量分配在全局数据段,在程序开始运行的时候被加载。局部变量则分配在程序的堆栈中。因此,操作系统和编译器可以通过内存分配的位置来知道来区分全局变量和局部变量。
## 通过代码实现下面要求(略)
1. 通过原型链实现对象继承
2. js手动实现 jq的链式操作
3. 做一个网页计算器 实现输入两个数 完成加减乘除四则运算
4. 实现一个打点计时器,要求
1、从 start 到 end包含 start 和 end每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1start 和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

View File

@@ -0,0 +1,251 @@
# 考试题目
## 填空
1. js变量类型一共有 2 种,分别是哪些
原始值和引用值
原始值 number string boolean undefined nll
引用值 object
3. 将 "025.5" 的string类型变量转化为 number 类型后 值是什么? 25.5
4. 1 + 1 的运算结果是 11
5. 0 || 3 的返回结果是 3
6. 1 && 5 的返回结果是 5
7. 三种数据类型检测的方法 typeof instanceof **Object.prototype.toString.call**
## 简答
1. 定义一个数组[1,2,4,8,32] 计算所有数组元素的总和 最后把数组元素的总和写在页面上。
var arr=[1,2,4,8,32]
var sum=0
for(let i in arr){
sum+=arr[i]
}
document.write(sum)
2. 定义一个方法 接受一个参数 计算从1 到传入数字的总和(累加) 并返回总和
function add(e){
var sum=0
for(let i=1;i<=e;i++){
sum+=i
}
return sum
}
3. 定义一个方法 接受一个参数 返回传入的参数是不是偶数 偶数返回 1 奇数返回 0
function panduan(e){
if(e%2){
return 0
}else{
return 1
}
}
4. 有下面一段代码 请写出答案
```javascript
let obg = {
name:"啦啦啦",
age:18
}
function func(o){
o.name = 123
}
func(obg)
```
执行完之后obg的值是什么 为什么
{name:123,age:18}
func(obg) 把obg 当作参数传了进去 然后 从函数体内 修改了obj里name的值为123
然后 重新输出obg时 name 就变成123了
5. 有下面一段代码 请写出答案
```javascript
let n = "喵喵喵"
window.n = "汪汪汪"
let obg = {
n:"啦啦啦",
echo: ()=> {
return this.n;
}
}
let jieguo = obg.echo()
```
请问变量 jieguo 的值是什么,为什么
汪汪汪
箭头函数内部没有this 他的this会指向外面一层的对象所以会从window 里取n的值 即汪汪汪
6. 请写出一个构造函数 他有一个name 属性和一个 echo方法 执行echo的时候会返回他name的值 new 的时候将传入的参数的值赋值给name
function miao(name){
this.name=name
this.echo=function(){
return this.name
}
}
var mao=new Miao('本猫咪')
7. 分析下面代码的预编译过程
```
var shopname='解忧杂货店';
var auth="东野圭吾"
function echo(pri){
var say=function(){console.log("welcome")}
age=40
function end(){
console.log('欢迎下次光临')
}
}
echo("0.0")
```
go:
1.{
shopname:undefined
auth:undefined
age:undefined
echo:undefined
}
2.{
shopname:"解忧杂货店"
auth:"东野圭吾"
age:40,
echo:undefined
}
3.{
shopname:"解忧杂货店"
auth:"东野圭吾"
age:40,
echo:function
}
AO:
1.{
pri:undefined
say:undefined
end:undefined
}
2.{
pri:0.0,
say:function(){},
end:undefined
}
3.
{
pri:0.0,
say:function(){},
end:function(){},
}