1.作用域:就是可以访问到变量的集合
局部作用域:就是函数内部定义定义的变量
全局作用域:就是函数外部定义的变量
作用域链:就是从当前作用域开始,一层一层的寻找某个变量,直到找到全局作用域,没有找到就放弃
2.html语义化
语义化意思就是顾名思义,就是拿正确的标签做正确的事情,常见的语义化标签有
header nav article footer
好处:
好处就是代码结构清晰,易于开发者去维护,方便其他设备解析网页,并且利于seo优化,搜索引擎会根据不同的标签赋值
3.网页生成的过程
首先会被HTML解析变成Dom树,css也会被解析变成cssom树,两个相互结合,就会变成渲染树
然后就会布局,绘制在屏幕上去
4.重绘:重绘发生的变化比较小,当某一个元素的外观发生变化,比如颜色,就会重绘
5.回流:回流就是Dom发生了变化,影响了元素,比如Dom 对象的大小,位置
6.如何最小化重绘和回流
需要对元素进行复杂的操作的时候,可以先进行元素的隐藏,操作完成后显示
一次创建多个Dom结点的时候可以使用DocumentFragment(文档碎片,当里面所有元素发生了变化,才会出现在页面上)
避免使用css的表达式,避免使用table,还可以缓存属性值
7.css盒模型
盒模型叫做box model (包括了border,padding,margin,content)
8.css样式优先级
!import > style > id >class>标签
9.Dom和Bom的区别
首先Bom是浏览器对象的模型,Dom是文档对象的模型
在Bom我们可以对浏览器就行一系列的操作,进行移动窗口和改变状态栏
在Dom我们可以对Dom所有元素进行访问
在Dom 我们还可以分为三种,Dom XML Dom HTML Dom
10.js基本数据类型
number null string Boolean undefined symbol
引用数据类型
array object function
11.typeof 用于判断数据类型的。返回值有上面的数据类型
12.instanceof 判断该对象是谁的实例
13.闭包
首先闭包通俗就是函数套一个函数,一个函数有权访问另一个函数作用域里面的函数和变量
内部函数可以访问外部函数的参数和变量 参数和变量不会被垃圾回收机制回收
作用
有权访问别 的函数
模拟块级作用域
创建一个模块
可以去缓存值,例如vue里面的计算属性
14.原型链
什么是原型:就是每一个对象里面都会有prto属性,该属性就是指向自己的prototype
原型链:当我们去访问对象的属性的时候,我们就是去该对象内部去找,找不到的话去原型里面去找,
原型里面又有我们自己的原型,就这样一直找下去,如果找不到的话,返回一个null
15.this指向
当作为函数的时候,this指向的是全局
当作为对象的时候,this指向是该对象
在构造函数里面去,this指向new创建的对象
16.new
new实例化,当你new实例化一个函数的时候,就会拿到该函数的属性和方法
17 css新增特性
css3属性选择器
css2.1有7中选择器
基础选择器:通配符选择器、标签选择器、类选择器、id选择器 高级选择器:后代选择器、交集选择器、并集选择器
css3新增的选择器:子类选择器、兄弟选择器、结构选择器、伪类选择器、属性选择器
属性选择器:
a[href$='.pdf']表示href属性中以.pdf结尾的被选中
a[href^='mailto']表示href属性中以mailto开头的被选中
a[href*='item']表示href属性里面含有item的都被选中
css伪类选择器:
:nth-of-type(odd表示奇行,even表示偶行)通过参数来选择表格的奇行还是偶行
:nth-child(n表示全部选择,n+i,表示第i行开始下面选中,2n,表示2的倍数,3n,表示3的倍数)
:nth-last-child()和nth-child一样,不过顺序向下到上
css盒模型
css3可以通过box-sizing来指定盒模型,就可以设置一个元素的总宽度和总高度
content-box 标准盒模型 width和height只包括内容的宽和高
border-box 怪异模型 width和height包括了内容,内边距和边框
边框圆角 border-radius
文字阴影 text-shadow(水平阴影的位置,垂直阴影的位置,模糊的距离,阴影的颜色)
盒子阴影 box-shadow(
h-shadow 必需。水平阴影的位置。允许负值。
v-shadow 必需。垂直阴影的位置。允许负值。
blur 可选。模糊的距离。
spread 可选。模糊的尺寸。
color 可选。阴影的颜色。
inset 可选。将外部阴影改为内部阴影。)
过度属性 transition
语法格式 transition:过渡的属性 过渡时间 运动曲线 延时时间;
transform
translate 平移
scale 缩放
rotate 旋转
skew 倾斜
transform-origin 基准点
@keyframes 动画名称 animation:动画名称 过渡时间 速度曲线 动画次数 延时时间。
18.es6常用的新语法
新的变量声明方式
let 是 变量 const 是常量
解析结构
1.结构数组 2.结构对象3.解析嵌套结构4.函数参数的解析5.字符串的解析
模板字符串
...扩展运算符
箭头函数
对象字面量简写
Class
extends 类的继承
Map 和 Set
1.Map 对象是键值对集合,和 JSON 对象类似,但是 key 不仅可以是字符串还可以是其他各种类型的值包括对象都可以成为Map的键
map一个key只能对应一个值
map如果你多次对一个key放入value,后面的值会把前面的值顶掉
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined
2、Set 对象类似于数组,且成员的值都是唯一的
//通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果
s.add(4);
s; // Set {1, 2, 3, 4}
s.add(4);
s; // 仍然是 Set {1, 2, 3, 4}
//通过delete(key)方法可以删除元素
var s = new Set([1, 2, 3]);
s; // Set {1, 2, 3}
s.delete(3);
s; // Set {1, 2}
add(value):添加某个值,返回Set结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。
字符串的新方法 includes
数组的新方法reduce 合并数组
导入模块 import
filter() 过滤 map() 遍历数组
19.垃圾回收机制
JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。
有两种方式
引用计数
标记清除