- 哪些操作会引起浏览器的重绘和重排?
如果DOM变化仅仅影响的了visibility、outline、背景色等等非几何属性,此时就发生了重绘(repaint),因为布局没有发生改变。
以下这些操作,页面初始渲染、添加/删除可见DOM元素、改变元素位置、改变元素尺寸(宽、高、内外边距、边框等、改变元素内容(文本或图片等、改变窗口尺寸)会产生重排。 - 比较一下opacity;0;visibility:hidden,display:none;优劣与适用场景
display: none (不占空间,不能点击)(场景,显示出原来这里不存在的结构)
visibility: hidden(占据空间,不能点击)(场景:显示不会导致页面结构发生变动,不会撑开)
opacity: 0(占据空间,可以点击)(场景:可以跟transition搭配、自定义图片上传按钮) - delete和Vue.delete删除数组的区别
delete 只是被删除的元素变成了empty/undefined 其他的元素键值还是不变。Vue.delete直接删除了数组改变了数组的键值。 - 实现对数组【109,4,2,29,15,22】的排序,要求结果【109,15,2,22,29,4】?
var arr=[109,4,2,29,15,22]
arr.sort();
console.log(arr);// [109, 15, 2, 22, 29, 4]
- 实现对字符串AbcDef大小写反转,即将AbcDef=>aBCdEF?
var str ='AbcDef'
console.log(str);
var newStr = str.split('');
for (var i = 0; i < newStr.length; i++) {
if (newStr[i] >= 'A' && newStr[i] <= 'Z') {
newStr[i] = newStr[i].toLowerCase()//转换成小写
} else if (newStr[i] >= 'a' && newStr[i] <= 'z') {//字母是小写的时候
newStr[i] = newStr[i].toUpperCase();//转换成大写
}
}
console.log(newStr);//转换后的数组
console.log(newStr.join(''));//最后把数组中的元素拼接起来
- 请简单解释他们?JSONP、Restful、XSS、CSRF、Promise。
JSONP:(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
Restful:是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
XSS:全称是Cross Site Scripting即跨站脚本攻击,当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了。
CSRF:跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
Promise:Promise 是一个对象,对象里存储一个状态,这个状态是可以随着内部的执行转化的,为以下三种状态之一:等待态(Pending)、完成态(Fulfilled)、拒绝态(Rejected)。
1、主要用于异步计算
2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
3、可以在对象之间传递和操作promise,帮助我们处理队列