一 数据类型
一 基本数据类型
String Number Boolean Undefined Null
二 引用数据类型
Object Function Array
什么是数据
存储在内存中代表特定信息对二进制
特点
可传递 可运算
什么是内存
内存通电后产生的可存储数据的空间
内存的分类
堆(对象)和栈(全局变量/局部变量)
什么是变量
可变化的量 由变量名和变量值组成
每个变量都对应一小块内存 变量名用来查找对应的内存 变量值就是内存中保存的数据
内存 数据 变量 三者之间的关系
内存用来存储数据的空间
变量是内存的标识
什么时候给对象赋值为null
初始赋值为null 表明将要赋值为对象
结束前赋值 让对象被垃圾回收
Javascript调用函数时传递变量参数时 是值传递还是引用传递
理解1 都是值传递(基本/地址值)
理解2 可能是值传递 也可能是引用传递(地址值)
Javascript引擎如何管理内存
内存的生命周期
----分配小内存空间 得到它的使用权
----存储数据 可反复进行操作
----释放小内存空间
释放内存
----局部变量 函数执行完自动释放
----对象 首先成为垃圾对象=>垃圾回收器回收
二 事件冒泡?如何解决?与事件捕获的区别
事件冒泡
----子元素的事件点击 也激活了父元素的事件点击
阻止冒泡
----e.stopPropagation()
事件捕获
----首先window会捕获到事件 之后document documentElement body会捕获到 再之后就是在body中DOM元素一层一层的捕获事件
事件冒泡
----和捕获阶段相反的将事件一步一步地冒泡到window
三 CSS3可以实现动画 Javascript也可以实现动画 为什么不用Javascript
Javascript在浏览器的主线程中运行 而主线程还有其他需要运行的js脚本 样式计算 布局 绘制等任务 对其干扰可能出现阻塞 从而造成丢帧的情况
CSS动画的优点:
- 浏览器可以对动画进行优化
- 代码相对简单 性能调优方向固定
- 对于帧速表现不好的低版本浏览器 css3可以做到自然降级
缺点:
- 运行过程控制较弱 无法附加事件绑定回调函数
- 代码冗长 实现复杂的动画 css代码会变得笨重
JS动画优点:
- js动画控制能力很强
- 动画效果比css3动画丰富
- css3有兼容性问题 而js大多时候没有兼容性问题
缺点:
- js在浏览器的主线程中运行 而主线程还有其他需要运行的js脚本 样式计算 布局 绘制等任务 对其干扰可能出现阻塞 从而造成丢帧的情况
- 代码的复杂度高于css3动画