Heading for the future

JS的一些小知识

1. bind()函数无法改变ES6箭头函数中this的指向

 

        const a = ()=>{
            console.log(this)
        }
        a.bind(document)()

2.当使用~~按位非进行类型转化时,转换浮点数会丢失小数点后的数,当字符串大于2147483647(即2的31次方减一)时转化会出问题,所以我们尽量少用~~转化过大的字符串

       ~~'15.121'   //返回15

  ~~2147483647  //返回2147483647

  ~~2147483648  //返回-2147483648   即2的31次方

3.typeof null 等于object的原因

  在JS最初的版本中,使用的是32位系统,为了性能考虑使用低位存储了变量的类型信息,000开头代表的是对象,然而null表示为全零,所以将它错误的判断为 object

  虽然现在的内部类型判断代码已经改变了,但是对于这个 Bug 却是一直流传下来。

 

  

posted @ 2018-10-27 20:51  一只菜鸟攻城狮啊  阅读(170)  评论(0编辑  收藏  举报