这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
JavaScript
js设计要旨
各司其责
- HTML/CSS/JS各司其责 应当避免不必要的由JS直接操作样式可以用class来表示状态 纯展示类交互寻求零JS方案
组件封装
·组件设计的原则:封装性、正确性、扩展性、复用性实现组件的步骤:结构设计、展现效果、行为设计 三次重构 插件化 模板化 抽象化(组件框架)
过程抽象
js操作css 而不是用js 操作页面
label for checkbox 可以点lable 可以改变样式
实例
轮播图
innerHTML innerText
innerHTML 会识别 标签 去重空格和换行
innerText 不会识别标签 去重空格和换行
setTimeout
等待时间后执行这个函数
setTimeout("changeState()",3000 );
== (相等)和 ===(全等)
=== 比 == 严格
比较过程:
双等号==:
(1)如果两个值类型相同,再进行三个等号(===)的比较
(2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:
1)如果一个是null,一个是undefined,那么相等
2)如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
三等号===: (1)如果类型不同,就一定不相等 (2)如果两个都是数值,并且是同一个值,那么相等; (3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
表示空
###null 与 undefined 不能发生转化
NaN
NaN != NaN 所以不能单纯的通过等号来判断 是不是 NaN
不了解的promise/async await
数据类型的判断有哪些方法?他们的优缺点及区别是什么?
然后判断数据类型的方法一般可以通过:typeof、instanceof、constructor、toString四种常用方法
| 不同类型的优缺点 | typeof | instanceof | constructor | Object.prototype.toString.call |
|---|---|---|---|---|
| 优点 | 使用简单 | 能检测出引用 类型 | 基本能检测所有 的类型(除了 null 和 undefined) | constructor 易被 修改,也不能跨 iframe |
| 缺点 | 只能检测 出基本类 型(出 null) | 不能检测出基 本类型,且不 能跨 iframe | constructor 易被 修改,也不能跨 iframe | IE6 下,undefined 和 null 均为 Object |
for in 和 for of
for in更适合遍历对象,当然也可以遍历数组,但是会存在一些问题,
for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值
for in总是得到对象的key或数组、字符串的下标
for of总是得到对象的value或数组、字符串的值
for in 和 for of 的区别 - 掘金 (juejin.cn)
js字符串
split('')& join('')
split 是将一个按照指定分隔符,分隔放入数组
join 是将一个数组有指定分隔符分隔放入数组 join('分隔符')
自我提问
- js的设计要旨是啥?
- == 与 ===的区别