javascript.basics
javascript.basics copied to clipboard
js的相关基础知识要点,体系梳理,总结知识点,设计模式,继承原型链,重难点方法解析
## 报错情况 ```js var a = {}; console.log(a.b.c)// Uncaught TypeError: Cannot read property 'c' of undefined ``` ## 普通解决方式 ```js var a = {}; console.log(a && a.b && a.b.c)// 返回...
```js let maybeSomething; // LONG FORM if(maybeSomething){ console.log(maybeSomething) } else { console.log("Nothing found") } //SHORTHAND console.log(maybeSomething ?? "Nothing found") console.log(1 ?? "xx") //1 console.log(0 ?? "xx") //0 console.log(null ?? "xx")...
```js const num = 1; // LONGER FORM if(num == 1 || num == 2 || num == 3){ console.log("Yay"); } // SHORTHAND if([1,2,3].includes(num)){ console.log("Yay"); } ```
# 小括号用法 ## 1. 改变运算符的优先级 ```js var a = 4 * (1 + 2); console.log(a);// 12 ``` ## 2.函数声明和函数调用参数列表: ```js function func(a,b){ //代码 } func(1,2); // 参数列表注意点 function a(b=222,c=333) {...
```js window.aaa = { name:"window", b :() => { console.log(this.name,11111) }, c: { name:"c", d: () => { console.log(this.name,222222) } }, cc: { name:"cc", dd: () => { console.log(this.name,444) }...
1. Event Loop(事件轮询) 2. macro-task(宏任务) 包括整体代码script、setTimeout,setInterval,I/O 3. micro-task(微任务):Promise、process.nextTick - 输出为1,2, 3 ```js // 下一次的宏任务 setTimeout(() => { console.log(3) },0) new Promise(function(resolve) { // 正常顺序执行 console.log('1'); resolve(); }).then(function() { // 微任务...
```js // 用reduce时: var arr = ["李","李","设","弟","弟","生","生","李"]; function getRepeatNum(){ return arr.reduce(function(prev,next){ prev[next] = (prev[next] + 1) || 1; return prev; },{}); } console.log(getRepeatNum()); ```
# 发布订阅模式 - 可以简单的理解为普通市民订阅报纸(有多个需求不同报纸的人)。 - 报社分发报纸(有多家不同类型的报社) ### 下面模拟一下场景  ```js // 方法就是人员,报社列一张订阅表,对应的报社在分发的时候执行对应列表的方法即可 // 人员1订阅了报纸1,报纸2 people1.subscribe("publisher1").subscribe("publisher2"); // 人员2订阅了报纸3,报纸4 people2.subscribe("publisher3").subscribed("publisher4"); // 报社1 分发报纸,触发人员1的订阅,于是人员1收到报社1的报纸 publisher1.deliver(data); // 报社2 分发报纸,触发人员1的订阅,于是人员1收到报社2的报纸 publisher2.deliver(data); // 报社3 分发报纸,触发人员2的订阅,于是人员2收到报社3的报纸 publisher3.deliver(data);//增加...
# 传统方式 ```js var data = { productId: 12345678 }; var final = { productionSeqNumber: "" }; // 两个相同字段,却使用不同键值名,容易混淆 final.productionSeqNumber = data.productId; ``` # 改进方式 ```js // 预先进行缓存 var productionSeqNumber...
# AMD(异步加载)- CMD(同步/本地加载) - AMD是前置依赖,CMD是就近依赖。 ## 模块化的基本写法 ```js var module1 = (function(){ // 内部私有变量不被暴露 var _count = 0; // 可以用于外部使用的共有方法 var m1 = function(){ //... }; var m2 = function(){ ...