JS 补遗
~ 实际结果是取反再减一⌗
位运算 NOT 由否定号(~)表示,它是 ECMAScript 中为数不多的与二进制算术有关的运算符之一
位运算 NOT 是三步的处理过程:
1.把运算数转换成 32 位数字
2.把二进制数转换成它的二进制反码
3.把二进制数转换成浮点数
位运算 NOT 实质上是对数字求负,然后减 1;4 > -4 > -5
var与function⌗
JS中function声明和var声明都会被提前,最终得到结果为function,是因为名称解析顺序-Name Resolution Order
script defer && asnyc && module⌗
async 属性。立即请求文件,但不阻塞渲染引擎,而是文件加载完毕后阻塞渲染引擎并立即执行文件内容。
defer 属性。立即请求文件,但不阻塞渲染引擎,等到解析完 HTML 之后再执行文件内容。
HTML5 标准 type 属性,对应值为“module”。让浏览器按照 ECMA Script 6 标准将文件当作模块进行解析,默认阻塞效果同 defer,也可以配合 async 在请求完成后立即执行。
部分函数里面的this⌗
var dx = {
arr: [1]
}
dx.arr.forEach(function() {console.log(this)}) // ?
如果你看过 forEach 的说明文档便会知道,它有两个参数,第一个是回调函数,第二个是 this 指向的对象,这里只传入了回调函数,第二个参数没有传入,默认为 undefined,所以正确答案应该是输出全局对象。
类似的,需要传入 this 指向的函数还有:every()、find()、findIndex()、map()、some(),在使用的时候需要特别注意。
阅读其他美文