1、javascript的typeof返回哪些数据类型
string number array object function Boolean undefined
数组(Array)、日期对象(Date)、正则(RegExp)、 Math =>object
考点:使用typeof检测数据类型
扩展:如何检测数组类型?
Array.isArray(); 浏览器兼容性:IE9+
toString.call([]);//”[object Array]”
[] instanceof Array
var arr=[];
arr.constructor;//Array
2、例举3种强制类型转换和2种隐式类型转换?
强制类型转换:自己通过函数来进行数据类型转换
举例:(parseInt,parseFloat,Number())
隐式类型转换:JS引擎自动帮我们转换的
举例:==、 console.log()、 alert() 、if() 、+-*/
扩展:通过==比较两边的值是否相等的结果?
1==’1’
null==undefined
3、split() join() 的区别
split()将字符串按照指定的字符分割成一个数组,并返回
join()将数组用指定的字符连接成一个字符串,并返回
4、数组方法pop() push() unshift() shift()
栈方法:
push()尾部添加,返回 数组长度
pop()尾部删除,返回 被删除的元素
队列方法:
unshift()头部添加 ,返回 数组长度
shift()头部删除,返回被删除的元素
这里还是要推荐下小编的web前端学习 群 : 687958461,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份最新的web前端资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。
5、事件绑定和普通事件有什么区别
普通事件:给html元素添加一个特定的属性(比如:onclick)
事件绑定:js代码中通过标记(id tag class)获取元素,给元素添加特定的方法(比如onclick)
传统事件绑定和符合W3C标准的事件绑定有什么区别?
div1.onclick=function(){};
1、如果说给同一个元素绑定了两次或者多次相同类型的事件,那么后面的绑定会覆盖前面的绑定
2、不支持DOM事件流 事件捕获阶段目标元素阶段=>事件冒泡阶段
addEventListener
1、如果说给同一个元素绑定了两次或者多次相同类型的事件,所有的绑定将会依次触发
2、支持DOM事件流的
3、进行事件绑定传参不需要on前端
addEventListener(“click”,function(){},false);//此时的事件就是在事件冒泡阶段执行
ie9开始,ie11 edge:addEventListener
ie9以前:attachEvent/detachEvent
1、进行事件类型传参需要带上on前缀
2、这种方式只支持事件冒泡,不支持事件捕获
事件绑定是指把事件注册到具体的元素之上,普通事件指的是可以用来注册的事件
6、IE和DOM事件流的区别
IE9以前:attachEvent(“onclick”)、detachEvent(“onclick”)
IE9开始跟DOM事件流是一样的,都是addEventListener
比较attachEvent和addEventListener:
1、attachEvent只支持事件冒泡 addEventListener既支持事件冒泡,也支持事件捕获
2、参数:attachEvent事件类型需要on前缀 addEventListener事件类型不需要on前缀
3、如果使用attachEvent对一个元素的目标阶段绑定了多次事件,那么会按照绑定顺序的相反顺序进行触发
如果使用addEventListener对一个元素的目标阶段绑定了多次事件,那么会按照绑定顺序进行触发
7、IE和标准下有哪些兼容性的写法
a、获取事件对象:var ev = ev || window.event
var ev=ev?ev:window.evnet;
srcElement:IE9之前的浏览器用来获取事件目标元素
target:IE9+、ff、chrome用来获取事件的目标元素
b、获取事件目标元素:var target = ev.srcElement||ev.target
c、innerText
8、call和apply的区别
考点:call和apply的用法
call和apply相同点:改变函数中this的指向
不同点:函数参数的传递形式
call将函数参数依次传入
apply将函数参数用一个数组的形式传入
无参数调用:
function fn(){
alert(this.name);
}
var p1={name:1};
fn.call(p1);
fn.apply(p1);
1
2
3
4
5
6
有参数调用:
function fn2(name,age){
this.name=name;
this.age=age;
}
var p1={};
fn2.call(p1,"张三",20);
fn2.apply(p1,["张三",20]);