1、什么JavaScript?
基于对象和事件驱动的弱类型脚本语言
2、js的原始数据类型有哪些?
number,string,undefined,boolean,symbol、function、object
3、ES5和ES6中新增的数组方法有哪些?
forEach、filter、map、some、every、reduce、reduceRight、flat
4、节点获取:
firstElementChild、lastElementChild
children、nextElementSibling、previousElementSibling、parentNode、attributes
5、如何获取非行间样式?
对象.currentStyle.样式
getComputedStyle(对象).样式
6、什么是数据渲染
通过js代码给html页面条件的内容,就称为数据渲染
回流:在使用js代码操作html页面时,会改变页面结构
重绘:在使用js代码操作html页面时,不会改变页面结构
7、数据渲染的方式有哪些?
1、字符串拼接
2、dom循环
3、文件碎片
8、什么是递归函数?如何实现一个递归函数?
在函数中调用当前函数。
递归函数的组成:递归前进段,边界条件,递归返回段
语法:
function fn1(m){
if(条件){
return 值
}
return fn1(修改参数m)
}
9、什么是事件对象?
当通过事件绑定时,触发该事件后,会产生很多对该事件描述的信息所组成一个对象,这个对象就是事件对象
10、什么是事件委托?怎样才能把自己的事件进行委托?
把子元素中的事件委托给结构父级元素身上相同类型的事件
1、先查找结构父级中相同类型的事件
2、找到以后,在事件中进行目标对象的判断,判断当前操作的是否为所委托事件的子元素
11、列举常见的浏览器兼容方式?
1、获取非行间样式:
IE:currentStyle
非IE:getComputedStyle()
2、事件监听:
IE:attachEvent()
非IE:addEventListener()
3、阻止默认行为
e.returnValue=false
e.preventDefault()
4、阻止事件传播:
e.cancelBubble=true
e.stopPropagation()
5、节点获取:
firstChild
firstElementChild
6、获取操作目标:
e.target || e.srcElement
7、事件对象:
e || window.event
8、滚动距离
document.body.scrollTop || document.documentElement.scrollTop
12、构造函数中有几种属性?分别是哪些?怎样创建?
3种,
静态属性:通过构造函数名称来进行创建
原型属性:在原型空间中创建
实例属性:在构造函数中使用this关键字来创建
13、检测数据类型的方式有哪些?
1、typeof
2、Object.prototype.toString.call()
3、constructor
4、instanceof
14、简单介绍一下函数中this关键字的指向
1、直接函数名()调用函数时,函数中的this指向window
2、对象.函数名()调用时,函数中的this指向.前面的对象
3、自执行函数中的this指向window
4、定时器函数中的this指向window
5、通过事件绑定来调用的事件处理函数,函数中的this指向事件源
6、箭头函数中this,指向上下文this。也就是说上下文this指向哪里,那么箭头函数中this也就指向哪里
15、var a=值,a的可以是任意类型,请问a.b是否会报错?如果报错,请问报什么类型错误
当a的值不是undefined或null时,不会报错
如果是undefined或null时,则会报类型错误
主要是根据对象的访问原则产生
16、使用实例对象直接获取原型空间中内容的方式有哪些?
1、对象.__proto__
2、对象.constructor.prototype
3、Object.getPrototypeOf()
1、数组的一些API, 哪些能够改变原数组, 那些不能 ?
push()
pop()
unshift()
shift()
sort()
reverse()
splice()
可以改变原数组
forEach()
map()
filter()
some()
every()
...
17、for 循环与 forEach 的区别 ?
1、前者可以设置初始值,后者不行
2、前者可以使用break跳出,后者不行
3、前者的循环变量可以在外面使用,后者不行
18、let, const, var 的区别 ?
1、let,const定义的变量没有声明提升,var可以声明提升
2、let,const不能重复声明变量,var可以
3、let,const声明的变量有块级作用域,var没有
19、面向对象和面向过程有什么区别?
1、面向过程:从细节上考虑问题,在实现一个功能时,需要去思考每一步的处理方案
2、面向对象:从大局上考虑问题,在实现一个功能时,那么创建一个对象去处理
20、检测数据类型的方式有哪些?
1、typeof
2、Object.prototype.toString.call()
3、constructor
4、instanceof
21、简单介绍一下函数中this关键字的指向
1、直接函数名()调用函数时,函数中的this指向window
2、对象.函数名()调用时,函数中的this指向.前面的对象
3、自执行函数中的this指向window
4、定时器函数中的this指向window
5、通过事件绑定来调用的事件处理函数,函数中的this指向事件源
6、箭头函数中this,指向上下文this。也就是说上下文this指向哪里,那么箭头函数中this也就指向哪里
22、var a=值,a的可以是任意类型,请问a.b是否会报错?如果报错,请问报什么类型错误
当a的值不是undefined或null时,不会报错
如果是undefined或null时,则会报类型错误
主要是根据对象的访问原则产生
23、使用实例对象直接获取原型空间中内容的方式有哪些?
1、对象.__proto__
2、对象.constructor.prototype
3、Object.getPrototypeOf()