经典Web面试题(JS篇)
(2022-08-24 11:38:57)
标签:
h5前端培训java培训ui设计培训菁瑞优智it |
学IT到成都菁瑞优智
1、
2、
'string','number','boolean','undefifined','symbol'但判断
(1)两等号判等,会在比较时进行类型转换;
(2)三等号判等(判断严格),比较时不进行隐式类型转换,(类型不同则会返回false);
(3)Object.is
4、
1、对于string,number等基础类型,==和===有区别
1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不
2)同类型比较,直接进行“值”比较,两者结果一样。
2、对于Array,Object等高级类型,==和===没有区别进行“指针地址”比较。
3、基础类型与高级类型,==和===有区别
1)对于==,将高级转化为基础类型,进行“值”比较。2)因为类型不同,===结果为false。
5、
ES5
注意:let、const、class声明的全局变量再也不会和全局对象的属性挂钩。
事件代理/事件委托是利用事件冒泡的特性,将本应该绑定在多个元素上的事件绑定在他们的祖先元素上,尤其在动态添加子元素的时候,可以非常方便的提高程序性能,减小内存空间。
冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。
捕获型事件:事件从最不精确的对象(document
在添加事件时用addEventListener(event,fn,useCapture)方法,基中第3个参数useCapture是一个Boolean值,用来设置事件是在事件捕获时执行,还是事件冒泡时执行。
注意:IE浏览器用attachEvent()方法,此方法没有相关设置,不过IE的事件模型默认是在事件冒泡时执行的,也就是在useCapture等于false的时候执行,所以把在处理事件时把useCapture设置为false是比较安全,也实现兼容浏览器的效果。
w3c的方法是e.preventDefault(),IE则是使用e.returnValue
functionstopDefault( e
)
return
false也能阻止默认行为。
分为三大阶段:捕获阶段--目标阶段--冒泡阶段
事件代理简单说就是:事件不直接绑定到某元素上,而是绑定到该元素的父元素上,进行触发事件操作时(例如'click'),再通过条件判断,执行事件触发后的语句(例如'
好处:(1)使代码更简洁;(2)节省内存开销
使用addEventListener的方式来绑定多个事件。例如
var btn =
document.getElementByIdx_x('btn')btn.addEventListener('click',
fn1)btn.addEventListener('click', fn2)functionfn1
()
只要在某个内部作用域内访问在当前作用域之外定义的变量,就会创建闭包。
1)
this总是指向函数的直接调用者(而非间接调用者)
2)
3)
this永远指向函数运行时所在的对象,而不是函数被创建时所在的对象。
普通的函数调用,函数被谁调用,this就是谁。
构造函数的话,如果不用new操作符而直接调用,那即this指向window。用new操作符生成对象实例后,this就指向了新生成的对象。
匿名函数或不处于任何对象中的函数指向window
如果是call,apply等,指定的this是谁,就是谁。
1)
2)
3)
call apply
bind都可以改变函数调用的this指向。
函数.call(对象,arg1,arg2....)函数.apply(对象,[arg1,arg2,...])var
ss=函数.bind(对象,arg1,arg2,....)
1.第一个参数都是指定函数内部中this的指向(函数执行时所在的作用域),然后根据指定的作用域,调用该函数。
2.都可以在函数调用时传递参数。call,bind方法需要直接传入,而apply法需要以数组的形式传入。
3.call,apply方法是在调用之后立即执行函数,而bind方法没有立即执行,需要将函数再执行一遍。
4.改变this对象的指向问题不仅有call,apply,bind方法,也可以使用that变量来固定this的指向。