0.1+0.2为什么不等于0.3
.1 和 0.2 都是无限循环的二进制数,在转换为浮点数时并不能完全准确地表示。浮点型数字不能用二进制来进行准确表达只能取近似值。
forEach map filter之间的区别
forEach:调用数组的每个元素,并将元素传递给回调函数。原数组不变。基本和for循环的原理一样
map():方法定义在JavaScript的Array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值
filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
总结:
1、map、foreach、filter(value,index,arr)方法有三个参数,分别是 数组内容、数组索引、数组本身;
2、 都不会改变原数组;
3、map、filter 会返回新数组,foreach不会;
4、filter会过滤条件不成立的元素,map会把不成立的元素标记成undefined;
src 与 href 的区别
src 用于替换当前元素,href 用于在当前文档和引用资源之间确立联系。
src 是 source 的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求 src 资源时会将其指向的资源下载并应用到文档内,例如 js 脚本,img 图片和 frame 等元素。
当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行
完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js 脚本放在底部而不是头部。
href 是 Hypertext Reference 的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,如果我们在文档中添加
那么浏览器会识别该文档为 css 文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用 link 方式来加载 css,而不是使用@import 方式。
一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。
-
图片懒加载,在页面上的未可视区域可以添加一个滚动条事件,判断图片位置与浏览器顶端的距离与页面的距离,如果前者小于后者,优先加载。
-
如果为幻灯片、相册等,可以使用图片预加载技术,将当前展示图片的前一张和后一张优先下载。
-
如果图片为 css 图片,可以使用 CSSsprite,SVGsprite,Iconfont、Base64 等技术。
-
如果图片过大,可以使用特殊编码的图片,加载时会先加载一张压缩的特别厉害的缩略图,以提高用户体验。
-
如果图片展示区域小于图片的真实大小,则因在服务器端根据业务需要先行进行图片压缩,图片压缩后大小与展示一致。
利用延时器创建一个每过一秒创建一次请求的函数
const request = () => {
console.log(43434);
for (let i = 0; i < 10; i++) {
setTimeout(() => {
console.log(i);
}, 1000 * i);
}
};