你不知道的JavaScript 观后收获

2020-12-30

今天的收获

奇特的~运算符

  • 解释一下
    ~42 //相当于 -(42+1)==>-43
  • 适用场景
var a = 'hello world';
if (~a.indexOf('lo')) {
  console.log(true,~a.indexOf('lo'))
}

~~-78.9==> -78 //最大支持到32位

三元运算符?:判断a是否为真

var b=a?true:false //建议写为 var b=Boolean(a)?true:false

把关运算符&&

function foo(){
console.log(a)
}
if(a){
foo()
} //简写 a&&foo()

2020-1-6

强制类型转换部分

  • 在比较的时候可能会默认调用 valueof toString 方法进行默认转换

  • 我们要对==两边的值认真推敲,以下两个原则可以让我们有效地避免出错。

    • 如果两边的值中有true或者false,千万不要使用==。

    • 如果两边的值中有[]、""或者0,尽量不要使用==。这时最好用===来避免不经意的强制类型转换。这两个原则可以让我们避开几乎所有强制类型转换的坑

地狱回调部分

  • 地狱回调造成的结果是无法被维护,更新

  • 地狱回调的代码就好像一条铁链,一环扣着一环,如果其中一环断掉(出现问题),就会出现一着不慎,全盘皆输的现象,代码逻辑都是固定死的,很难将其中一环打开重新修改;

  • 信任问题:无法保证回调函数100%会被调用,即使写了大量逻辑代码来确保代码可以被执行,但是仍然会造成代码堆积的现象,最终导致代码很难更新和维护

2020-2-2

关于箭头的理解

箭头函数中没有自己的this值,箭头函数中所使用的this来自函数作用域链, 其遵循普通变量的规则,在函数作用域中一层一层向上找;也就是说箭头函数中的this取决于外部函数(摘抄于你不知道的JavaScript)

原文地址:https://www.cnblogs.com/shiazhen/p/14211722.html