例题—js(6)

二十七、js的两种定时器(setTimeout和setInterval的区别)

setTimeout只在指定时间后执行一次

setTimeout(function(){
	alert('执行');
},2000);

setInterval以指定时间为周期循环执行

setInterval(function(){
	alert('执行');
},2000);

一般情况下setTimeout用于延迟执行某方法或功能,
setInterval则一般用于刷新表单,对于一些表单的假实时指定时间刷新同步
清除Timeout的定时器,
传入id(创建定时器时会返回一个id) clearTimeout(i);

清除Interval的定时器,
传入id(创建定时器时会返回一个id) clearInterval(j);


二十八、JS内存泄露

1.JS内存空间分为栈、堆、池(一般归并到栈中)

  • 基本数据类型string、number、boolean、null、undefined保存在栈中
  • 复杂数据类型object保存在堆中
  • 常量存放在池中
  • js中分配的内存的生命周期为:内存分配->内存使用->内存回收

2.哪些操作会造成内存泄漏?
内存泄漏指任何对象在不再拥有或不需要它之后依然存在,即这部分内存用完之后并没有返回到内存池。

  • setTimeout第一个参数是字符串而不是函数的时候就会造成内存泄漏 闭包
  • 控制台日志
  • 循环(两个对象彼此引用且彼此保留)
  • 全局变量
    如果你不断的创建全局变量,不管有没有用到他们,他们都将滞留在程序的整个执行过程中。
  • 事件监听器
    在页面中创建事件监听器,但是在页面跳转时,又忘记移除这些监听器,那么也可能导致内存泄漏。

二十九、MVVM和MVC区别?(需完善)

MVVM
MVVM最早由微软提出来,它借鉴了桌面应用程序的MVC思想,在前端页面中,把Model用纯JavaScript对象表示,View负责显示,两者做到了最大限度的分离。

把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。

ViewModel如何编写?需要用JavaScript编写一个通用的ViewModel,这样,就可以复用整个MVVM模型了。

MVVM的设计思想:关注Model的变化,让MVVM框架去自动更新DOM的状态,从而把开发者从操作DOM的繁琐步骤中解脱出来!


三十、实现冒泡排序

冒泡排序原理:

  • 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  • 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比比较
let arr=[50,999,10,200,159,521,3,8,100];
function aSort(arr){
	//循环次数
	let max=arr.length-1;
	//外层循环控制比较次数,每次循环都会找出一个最大值
	for(let j=0;j<max;j++){
		//内存循环控制比较次数,并判断大小
		for(let i=0;i<max-j;i++){
			//如果前面的数大就把交换位置
			if(arr[i]>arr[i+1]){
				//定义一个变量保存前面的大数
				let temp=arr[i];
				//将小数换到前面
				arr[i]=arr[i+1];
				//将大数换到后面
				arr[i+1]=temp;
			}
		}
	}
	return arr;
}
console.log(aSort(arr));

三十一、实现轮播图的思路

1.图片轮播:

  • 设定两个类 .active{opacity:1} .opacity{opacity:0}
  • 将第一张图片添加class=‘active’
  • 设定一个定时器,每隔一段时间拿到当前轮播图片的index
  • 将此index图片移除类名active,添加类名opacity
  • 将下一张图片添加类名active
  • 轮播到最后一张图通过判断将index=0,跳转会第一张图

2.上/下一张切换按钮

  • 绑定点击事件
  • 拿到当前正在轮播图片的index
  • 将本张图片移除类名active,添加类名opacity
  • 如果是上一张将index-1的图片添加类名active
  • 如果是下一张将index+1的图片添加类名active
  • 第一张图片左切,设定index=最后一张图的index
  • 最后一张图右切,设定index=第一张图的index

3.圆点轮播(圆点和图片对应)

  • 设定两个类.red{background-color: red} .white{background-color: white}
  • 将第一张图片添加class=‘red’
  • 设定一个定时器,每隔一段时间拿到当前有颜色圆点的index
    将此index圆点移除类名white,添加类名red
    将下个圆点添加类名red
  • 轮播到最后一个圆点通过判断将index=0,跳转会第一张圆点

4.圆点按钮点击跳转到对应图片

  • 绑定点击事件
  • 点击哪个圆点就拿到哪个圆点的index
  • 将所有图片移除类名active,添加类名opacity
  • 将此index图片移除类名opacity,添加类名active
  • 将所有圆点移除类名red,添加类名white
  • 将此index圆点移除类名white,添加类名red
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值