前端总结二

197 阅读3分钟

Javascript 二

标签: Javascript


安全

1.什么是CSRF攻击,如何预防

CSRF全程 Cross Site Request Forgery, 跨站域请求伪造.CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式。相比于XSS,CSRF是利用了系统对页面浏览器的信任,XSS则利用了系统对用户的信任。防御CSRF攻击: 目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

图片

gif /jpge/png

1.特性:

JPG的主要特性是有损压缩,颜色种类丰富,非透明背景。

GIF的主要特性是帧动画,只有256种颜色,(注意GIF不支持半透明,只能完全透明或者不透明。)

PNG的主要特性是半透明。

2.如何选择格式?

照片用 JPG。 动画用 GIF。 Logo、Icon 等小图用 PNG-8。 非特殊情况,尽量不要用 PNG-24 和 PNG-32。

其他

一、防抖函数的作用是什么?请实现一个防抖函数。

防抖函数的作用 防抖函数的作用就是控制函数在一定时间内的执行次数。防抖意味着N秒内函数只会被执行一次,如果N秒内再次被触发,则重新计算延迟时间。

举例说明: 小思最近在减肥,但是她非常吃吃零食。为此,与其男朋友约定好,如果10天不吃零食,就可以购买一个包(不要问为什么是包,因为包治百病)。但是如果中间吃了一次零食,那么就要重新计算时间,直到小思坚持10天没有吃零食,才能购买一个包。所以,管不住嘴的小思,没有机会买包(悲伤的故事)... 这就是 防抖。

防抖函数实现

  1. 事件第一次触发时,timer 是 null,调用 later(),若 immediate 为true,那么立即调用 func.apply(this, params);如果 immediate 为 false,那么过 wait 之后,调用 func.apply(this, params)
  2. 事件第二次触发时,如果 timer 已经重置为 null(即 setTimeout 的倒计时结束),那么流程与第一次触发时一样,若 timer 不为 null(即 setTimeout 的倒计时未结束),那么清空定时器,重新开始计时。

防抖实现

immediate 为 true 时,表示函数在每个等待时延的开始被调用。immediate 为 false 时,表示函数在每个等待时延的结束被调用。

防抖的应用场景

  1. 搜索框输入查询,如果用户一直在输入中,没有必要不停地调用去请求服务端接口,等用户停止输入的时候,再调用,设置一个合适的时间间隔,有效减轻服务端压力。
  2. 表单验证
  3. 按钮提交事件。
  4. 浏览器窗口缩放,resize事件(如窗口停止改变大小之后重新计算布局)等。

二、【ES6】迭代器与可迭代对象

可迭代对象的特点

  1. 具有 Symbol.iterator 属性,Symbol.iterator() 返回的是一个遍历器对象
  2. 可以使用 for ... of 进行循环
  3. 通过被 Array.from 转换为数组

此处输入图片的描述

原生具有 Iterator 接口的数据结构:

  • Array
  • Map
  • Set
  • String
  • TypedArray
  • 函数的 arguments 对象
  • NodeList 对象

传送门