JavaScript的8道基础小题,检验你的“地基”是否牢固

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]);

你可能感兴趣的:(JavaScript的8道基础小题,检验你的“地基”是否牢固)