get 从服务器获取数据 post从服务器传数据
闭包 子函数可以调用父函数的属性方法 函数返回时没有是放资源
函数返回时没有释放资源的栈区
数组的方法
push从后面添加 返回值是数组的长度
pop 从后面删除 返回值是删除的元素
unshift从前面添加 返回值是数组的长度
shift从前面删除 返回值是删除的元素
reverse反转 返回值是反转后的数组
join合并
concat a数组与b数组连接 返回值是连接后的新数组
splice(index,number,替换成1,替换成2) 切 从index开始,删除number个,替换成 1,替换成2...
slice(start,end) 返回数组从start 到end-1的值
filter 过滤符合条件的对象 返回一个符合要求的数组
findIndex 返回第一个符合条件的对象的index “”第一个“”符合条件的
find()找不到返回-1 找到“第一个”符合条件的数组成员
map() 映射 可以全局更改对应的值 比如都加上2 返回一个新数组
reduce(回调,初始值)迭代数组所有项
every() 是不是每个都符合 有一个不符合则返回false 返回值为boolean
some()数组是否有一个符合条件 返回值为boolean
forEach(value,index,array) 等同于for循环
Array.from 将伪数组转化成数组 可以使用其方法
Array.of('2')等同于new Array(2) 数组的length都是1
arr.includes() 是否包含 返回Boolean 并且可以判断NaN
arr.keys()
arr.values()
arr.entries()
判断一个对象的类型
a typeof
b instanceof 判断一个对象是否为一个类的实例 是否为一个类的实例
c constructor 构造函数判断
d Object.property.toString.call() 例如 [object Array] Object.property.toString.call() 属性字符串化指向
跨域的方法
浏览器对js实行安全策略 同源政策(协议、域名、端口)
a jsonp 动态创建script 引入跨域文件
b postMessage window.postMessage
c CORS 需要请求头支持
函数防抖 函数节流
节流 一定的时间内执行一次
防抖 时间够用才执行
前端性能优化
1减少HTTP请求
2少用dom操作 减少dom元素数量
3代码合并压缩 精灵图片 压缩js css html
4少用耗性能的 opacity
5将外部脚本放到地下 js放到 body底下
6懒加载
7避免重复的请求 或者少用缓存
8避免重定向
9.图片懒加载
10js放在页面底部
11减少dns查询
作用域链针对变量的 如果变量范围内找不到就会沿着作用域链往外找
原型链针对构造函数
语义化
a用正确的标签去做正确的事 正确标签做正确的事
b利于SEO 便于浏览器 搜索引擎的搜索 利于seo
c无css时也是有格式的 便于阅读 无css有格式 利于阅读
d 利于后期维护 便于后期维护
浏览器内核 window.navigator.userAgent.indexOf()!=-1 进行判断
trident IE
gecko Firefox
webkit chrome
presto opera之前的
基本数据类型
string number boolean undefined null
object symbol
eval 对应的字符串解析成代码 并且运行
undefined
变量被声明了 但是没有赋值 声明变量但是没有赋值 var a //undefined
调用参数时 该给的参数没有给 函数调用 参数没有给全 function fn(a,b){console.log(b)//undefined} fn(1)
对象没有赋值的属性 没有赋值的属性 没有赋值的属性 window.a undefined
函数没有返回值 函数没有返回值 默认返回undefined
null
作为函数的参数 并且该函数的参数不是对象 函数的参数不是对象
对象原型链的终点 原型链的终点
new
a)创建一个新对象
b)this指向该对象
c)函数对其进行赋值 (属性、方法)
d)返回this
更改this指向 call参数一大堆 apply简化成了数组
apply的参数是 数组形式 apply(this指向,[])
call(this指向,arg1,arg2...)
一个程序至少有一个进程 一个进程至少有一个线程
多线程程序的并发性要高