12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 慕课网课程-面试题:
- 1. typeof 能判断哪些类型?
- 考点:JS基本类型
- 答案:boolean number string object undefined function
- 2. 何时使用=== 何时使用==
- 考点:JS数据类型判断、强制类型转换
- 问题:值类型、引用类型区别
- 答案:===是在数据类型相同的情况下再判断左右的值是否相等,==不考虑数据类型,数据类型不相同时,会自动进行数据类型转换
- 3. window.onload 和 DOMContentLoaded的区别
- 考点:网页渲染和加载的顺序
- 问题:为什么CSS写在头部,JS写在尾部
- 答案:window.onload是在页面元素加载完后触发,DOMContentLoaded是页面骨架加载完后触发
- 4. JS创建10个a标签,点击的时候弹出对应的序号
- 考点:JS作用域
- 问题:闭包
- 答案:
- for(var i = 1; i <= 10; i++){
- var a = document.createElement('a');
- a.href = "javascript:;";
- a.innerHTML = '链接i='+i;
- box.appendChild(a);
- (function (i){
- a.addEventListener('click', function (){
- alert(i);
- })
- })(i);
- }
- 5. 手写节流throttle、防抖debounce
- 考点:页面性能体验优化,节流是为了防止用户没看到效果前一直不停的点,导致事件一直触发。
- 问题:还有其他性能体验优化
- 答案:
- 节流
- var btn = document.getElementById(“btn”)
- var flag = false;
- btn.addEventListener(‘click’, function () {
- if(!flag){
- // TODO
- animate({},function () {
- flag = false;
- })
- }
- })
- 6. Promise解决了什么问题
- 考点:异步、JS单线程、事件循环。JS主线程先执行同步代码、同步代码执行完后,JS引擎会去异步队列中查看是否有可执行的代码,如果有,则加入到主线程队列中执行。如此循环。
- 问题:定时器等等
- 答案:解决了异步问题,使得一些耗时较长的代码不会阻碍主线程代码的执行,在异步代码执行完毕的时候,会触发resolved方法,执行失败的时候,执行rejected方法。
|