js中精度问题以及解决方案
js中的数字按照IEEE 754的标准,使用64位双精度浮点型来表示。其中符号位S,指数位E,尾数位M分别占了1,11,52位,并且在ES5规范中指出了指数位E的取值范围是[-1074, 971]。 精度问题汇总想用有限的位来表示无穷的数字,显然是不可能的,因此会出现一些列精度问
js中的数字按照IEEE 754的标准,使用64位双精度浮点型来表示。其中符号位S,指数位E,尾数位M分别占了1,11,52位,并且在ES5规范中指出了指数位E的取值范围是[-1074, 971]。 精度问题汇总想用有限的位来表示无穷的数字,显然是不可能的,因此会出现一些列精度问
前言如果我们需要解析一门语言。那么通常我们有3种方式: 自己实现一个parser,这种方式代价比较大。 使用仅支持解析特定语言的第三方库,但这些库通常仅支持较为流行的语言,可定制性较低。 使用一个可以生成parser的工具,这些工具被称为Parser Generator。 其
最近在工作中遇到一个由js精度引发的bug:比如用户自定义了一个表单提交的校验条件SUM(a, b) <= 0.3,此时,当a=0.1,b=0.2的时候,SUM(a, b)的值为0.30000000000000004,这导致校验条件得不到满足,表单也无法提交。 原因分析这个
之所以把js的装饰器和react中的HOC放到一起来写,是因为这两个东西的原理是很相近的。他们都实现了在不修改函数(或react组件)本身代码的情况下,给该函数(或组件)添加一些额外行为的功能。 js中的装饰器js中的Decorator语法属于ES7(ES2016)的新特性,这里
XSS和CSRF与网络安全息息相关,这篇文章就来浅析一下这两种攻击方式的原理,以及如何防范这两种攻击。 XSSXSS,跨站脚本攻击,即Cross Site Scripting,为了和CSS不重名,所以取名为XSS。 原理XSS攻击者通过畸形的输入,将恶意的js代码插入到了页面中。
Web缓存分为很多种:数据库缓存,服务器缓存(代理服务器缓存,CDN缓存),浏览器缓存。 而浏览器缓存也分为很多种:HTTP缓存,cookie,localStorage,indexDB等。这篇文章主要聚焦在HTTP缓存的部分。 为什么需要缓存?缓存可以带来很多好处,具体如下:
react是一个UI=f(prop|state)的框架,通过virtual dom的diff来决定对真实dom的修改,因为操作普通的js对象,比直接操作dom更加的高效。 当一个组件的prop或者state发生变化时,这个组件将进入更新阶段,如果shouldComponentUp
history也是HTML5新增的一个api,这里简单总结一下它的基本用法,最后探究一下使用history来实现前端路由的整体思路。 在历史记录之间穿梭history提供了几个非常方便的方法,帮助我们在浏览器的历史记录之间方便地进行切换,这相当于我们手动点击浏览器工具栏中的前进或
HTML5为我们带来了File相关的API,现在我们可以在Web页面中访问本地文件并且将其内容展示在页面中。 比如我们时常有这样的需求,让用户点击某个按钮上传图片,在图片上传成功之后,显示上传图片的缩略图;或者用户上传pdf文件之后,可以在线浏览pdf的内容。 这里就使用了Fil