问题总结一

138 阅读1分钟

问题总结

问题一:为什么定义变量时用void 0 代替undefined?

因为,javascript中undefined并不是关键字,可以作为变量,在局部作用域中可以当做变量使用:

function test () {
  var undefined = 1;
  var a = undefined;
  console.log(a);
}
test(); // 1

但是undefined是global object的属性,在IE上,它是个全局变量。 es5后,全局作用域下undefined non-configurable, non-writable, 参考地址:developer.mozilla.org/en-US/docs/…

var undefined = 2;
var a = undefined;
console.log(undefined) // undefined
console.log(a) // undefined

mdn规范建议:变量尽量避免赋值undefined,而是用void去转换。

问题二:为什么在 JavaScript 中,0.1+0.2 不等于 0.3

非整数的Number类型无法用==或者===进行比较,浮点数精度计算是转换为二进制后运算,0.1和0.2转换为二进制都是无限循环,需要四舍五入,所以导致==左右值不等。正确的比较方法是使用javascript提供的最小精度值,检查相减后的值是否小于最小精度值

0.1 + 0.2 - 0.3 <= Number.EPSILON

以上内容是在学习了winner老师的重学前端课程后,自己做的总结,不对或者理解不透彻的地方,还望大家留言告知,谢谢。