javascript面试题大全,每日更新

1. javascript的typeof返回哪些数据类型?

string,boolean,number,undefined,function,object(简单记忆sbnufo)

2.split() join() 的区别

前者是将字符串切割成数组的形式,后者是将数组转换成字符串(这个用过的都知道)

3.数组方法pop() push() unshift() shift() slice()

push()尾部添加 pop()尾部删除 unshift()头部添加 shift()头部删除 slice(number,index) 删除指定位置的个数

4.call和apply的区别

https://www.jianshu.com/p/bc541afad6ee

5.document load 和document ready的区别

document.onload 是在结构和样式,外部js以及图片加载完才执行js
document.ready是dom树创建完成就执行的方法,原生种没有这个方法,jquery中有 $().ready(function)

6.js中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式什么?

alert
confirm
prompt

7.innerHTML和outerHTML的区别

innerHTML(元素内包含的内容)
outerHTML(自己以及元素内的内容)

8.冒泡排序算法

比较俩相邻的数值的大小,如果a<b,那么交换他们的位置


2019-04-08


9.addEventListener的第三个参数

可选。布尔值,指定事件是否在捕获或冒泡阶段执行。

可能值:
true - 事件句柄在捕获阶段执行
false- false- 默认。事件句柄在冒泡阶段执行

参考:
http://www.runoob.com/try/try.php?filename=tryjsref_element_addeventlistener_capture
https://baijiahao.baidu.com/s?id=1609309080657127636&wfr=spider&for=pc


2019-04-10


10.什么是闭包?

闭包就是能够读取其他函数内部变量的函数。
由于在javascript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义在一个函数内部的函数“。
本质上,闭包是将函数内部和函数外部连接起来的桥梁。
闭包是不是相当(近似)于一个只有一个方法的对象,只有一个公开方法,而且成员数据几乎全私有(闭包)的对象,自然是一个紧凑版的对象了。
(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
参考:
https://blog.csdn.net/wy_blog/article/details/57130702
https://www.cnblogs.com/lqzweb/p/6215736.html
https://www.cnblogs.com/cxying93/p/6103375.html


2019-04-11


11.js number的范围

-253 ~ +253

12. 防抖和节流
// 非立即执行版 计时器存在就清楚计时器新起一个计时器去执行,一直等到不清除的计时器去执行,这个一直在一秒内只会执行一次
function debounce(func, wait) {
	let timeout; // 这是个闭包
	return function () {
		let context = this;
		let args = arguments;

		if(timeout) clearTimeout(timeout); //这句话是防抖的关键

		timeout = setTimeout(() => {
			func.apply(context, args)
		},wait)
	}
}
// 立即执行版 计时器存在就不执行,一开始就执行,但下次一直到计时器失效就执行,这个会执行俩次
function debounce(func, wait) {
	let timeout;
	return function () {
		let context = this;
		let args = arguments;
		
		if (timeout) clearTimeout(timeout); //这句话是防抖的关键

		let callNow;
		if(!timeout) callNow = true;

		timeout = setTimeout(() => {
			timeout = null;
		},wait)

		if (callNow) func.apply(context, args);
	}
}
// 节流,就是指连续触发事件但是在 n 秒中只执行一次函数
function throttle(func, wait) {
    let previous = 0;
    return function() {
        let now = Date.now();
        let context = this;
        let args = arguments;
        if (now - previous > wait) { // 因为闭包 previous = now;
            func.apply(context, args);
            previous = now;
        }
    }
}
// 定时器版本
function throttle(func, wait) {
    let timeout;
    return function() {
        let context = this;
        let args = arguments;
        if (!timeout) {
            timeout = setTimeout(() => {
                timeout = null;
                func.apply(context, args)
            }, wait)
        }

    }
}

2019-04-15


13. requestAnimationFrame

requestAnimationFrame采用系统时间间隔,保持最佳绘制效率,不会因为间隔时间过短,造成过度绘制,增加开销;也不会因为间隔时间太长,使用动画卡顿不流畅,让各种网页动画效果能够有一个统一的刷新机制,从而节省系统资源,提高系统性能,改善视觉效果
参考 :
https://www.cnblogs.com/xiaohuochai/p/5777186.html


2019-04-18


14. 手写promise

参考:
https://www.jianshu.com/p/c633a22f9e8c
https://yq.aliyun.com/articles/613412
https://promisesaplus.com/


2019-04-28


15. html5新增了那些内容?
16. CSS3那些内容比较熟悉?
17. ES6的proxy?
18. vue封装组件?
19. vuex是干嘛用的?

2019-10-31


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左钦杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值