自学前端有一年时间了, 整理下容易忽略的知识点
建议自己做一些实验
1. NaN只能用isNaN来判断
2. 在es5里面, 函数有两种执行方法: call 和 construct , 调用函数使用call, 当构造函数使用时使用construct
3. ++ a 和 a ++不一样, 前者先自加后赋值, 后者先赋值再自加
4. script有两个异步属性: async 和 differ , 前者不保证执行顺序, 后者保证执行顺序
5. null是空对象指针, 所以typeof操作符返回object
6. boolean类型和数字类型并没有什么关系, true不一定是 1 , false 不一定是 0
7. 对象转化为 boolean 都是true
8. 0.1 + 0.2 不等于0.3 这种问题并不只是 js 有 使用IEEE754的编程语言都有
9. && 和 | | 操作符短路效应 && 找 false , | | 找 true
10. 逗号操作符就是返回最后一个, (个人认为没什么用)
11. switch--case选择使用的===, 而且case并不只是常量, 可以是表达式, 如果工作中case不用break应该加入注释向同事坦明
12. js里面最经典的伪数组就是函数的argument数组, 不是array实例, 有length属性, 可以遍历
13. 函数的参数基本类型是复制的, 函数运行并不会改变原变量的值, 如果是复杂类型, 传递的也是值, 而不是引用(也不会改变原来的值)
14. typeof操作符返回六种类型: string, number, object, function, boolean, undefined
15. 使用var声明的变量会保存在最近的一个作用域内
16. 访问变量, 作用域越近越快
17. 数组对象array构造函数传入数字表示数组长度, 其他表示数组里面的值
18. js的数组可以是稀疏数组
19. ES5提供一个isArray函数来检测数组
20. 数组常用方法: pop(删除最后一个), unshift(头部增加一个), push(尾部添加一个), shift(头部减去一个), 并且操作数都会作为返回值, 所以栈和队列实现比较方便
21. 普通函数里面的this均指向window
22. img标签的src属性是异步加载