Xrikis blog
打灰

Good morning, how are you doing?

rgba(250,250,250,var(--un-bg-opacity))
最近更新:
数组
|
JavaScript
|
Frontend/JavaScript/DataType
  • 在JS中有一个经典的问题,就是 0.1 + 0.2 为什么不等于 0.3。在JS中输入 `0.1 + 0.2 === 0.3` 返回的结果是 false,说明JS认为两侧的结果不相等,这似乎违背了数学常识。 实际上这并非 JavaScript 这一门编程语言的问题,各种编程语言对于类似**浮点数的计算**都不太能把握得住。 计算机中,数字都是以二进制的形式存储的,包括在计算的过程中。虽然我们看到的都是十进制的数字,但是实际上计算机是将十进制的数字转换为二进制之后计算然后再输出十进制的。 简单来说就是计算机将 0.1 和 0.2 这两个数字转换为二进制存储后计算,然后将计算结果再转换为十进制呈现。小数转为二进制的规则是小数乘以2然后取整数部分,不断循环直至小数部分为0。但是 0.1 和 0.2 这两个小数转为二进制的时候都会存在无限循环的情况,而`IEEE754`标准规定存储的二进制最大位数为从第一个1开始的后**53**位,最后第54位采用0舍1入的方式,也即是近似存储。 正式由于这样才导致了计算时的误差。也就是我们看见的 > 0.1 + 0.2 = 0.30000000000000004 (小数点后17位) 由于存储的结果是近似值,那么计算出的结果自然也不准确,因此计算结果最后转换为十进制的时候就不是严格等于0.3了。
  • 字符串
    2024-11-15分钟
    正则表达式匹配模板字符串、驼峰命名和下划线命名方式之间的相互转换。
  • 数据类型与类型转换
    2024-11-15分钟
    JS中的数据类型大致可以分为两个大类,基本数据类型和引用数据类型。细分下来则有八个数据类型。 + 基本数据类型:number string boolean null undefined symbol bigint + 引用数据类型:object(包含Array、Function等) 在内存中的存储模式上,基本数据类型存储在栈中,引用数据类型存储在堆中。
  • 前端主题色切换方案
    2024-11-15分钟
    在一些网站中经常可以看到类似 `白天模式/夜晚模式` 的切换功能,比如我经常浏览的Vue.js的官网。在真实的业务开发场景中,也会存在这类需求。 因此这里简单总结以下目前常用的前端主题色切换的方案和各自的优缺点。更加详细的内容可以参考文章:[前端主题色切换方案](https://juejin.cn/post/7134594122391748615#heading-0)
  • Web Workers
    2024-11-15分钟
    由于本身需要进行DOM操作,JavaScript在设计之初就被限制为单线程,因为谁都不想看到两个不同的JS线程对同一个DOM进行操作而导致的糟糕情况。单线程虽然避免了冲突, 但是带来了另一个问题,**阻塞**,后面的任务在前面的任务没有执行完成之前是没有办法的执行。在Web中有一个常见的情况。假设页面中有一个**非常耗时但是不影响用户交互的操作**, 那么页面必须等待这个耗时操作执行完毕才能响应用户的操作。Web Workers的出现就是为了解决类似的问题,将这个耗时的操作放到worker中执行,主线程则继续响应用户操作,worker中的操作执行完毕后, 将执行结果发送给主线程。
Powered by Valaxy v0.20.0 | Theme - Hairy v1.2.7