36个助你成为专家需要掌握的JavaScript概念
1、调用栈执行
2、原始数据类型
const foo = "bar";
foo.length; // 3
foo === "bar"; // true
3、值类型和引用类型
var arr1 = [1,2,3];
var arr2 = arr1;
arr2.push(10);
console.log(arr2);
//[1, 2, 3, 10]
console.log(arr1);
//[1, 2, 3, 10]
4、强制类型转换
Number('789') // 显式转换
+'789' // 隐式转换
789 != '456' // 隐式转换
9 > '5' // 隐式转换
10/null // 隐式转换
true | 0 // 隐式转换
5、相等比较和’ typeof '操作符
typeof 3 // "number"
typeof "abc" // "string"
typeof {} // "object"
typeof true // "boolean"
typeof undefined // "undefined"
typeof function(){} // "function"
typeof [] // "object"
typeof null // "object"
6、JavaScript作用域
7、语句和表达式
8、 立即调用函数表达式和模块
9、 消息队列和事件循环
10、时间间隔
setTimeout允许我们在特定的时间间隔后运行函数一次。 setInterval允许我们重复运行一个函数,在特定的时间间隔后开始运行,然后在该时间间隔内连续重复运行。
11、 JavaScript引擎
12、位操作
13、DOM和布局树
14、类和工厂
15、"this"关键词和,‘apply’、'call’和’bind’方法
16、 构造函数和’instanceOf’操作符
17、原型
18、 用’new’、‘Object.create’、'Object.assign’创建对象
19、 ‘map’, ‘filter’, 和’reduce’方法
let numbers = [1,2,3,4,5,6]
const reduced = numbers.reduce((accumulator, currentValue) => accumulator + currentValue)
console.log(reduced)
// 21
20、纯函数、副作用和状态变化
21、闭包
22、高阶函数
23、 递归
24、 集合和生成器函数
25、 Promises
Pending: 你不知道你是否会得到那个电话。 Fulfilled: 妈妈很高兴,她给你买了一个全新的手机。 Rejected: 妈妈不高兴,她不给你买手机。
26、 异步编程
27、 ES6箭头函数
28、 数据结构
29、 时间复杂度
30、算法
搜索 排序
31、 继承、多态和代码重用
32、设计模式
33、 函数式编程
Pure functions Immutability Referential transparency Higher-order functions
34、干净代码的原则
35、解构
36、ES2020新特性
评论