chrome 如何调试js

JavaScript016

chrome 如何调试js,第1张

是可以调试js的。

使用的工具:谷歌浏览器、测试的网站;

可以按照下面的方法进行调试:

1、f12 打开开发者工具,控制台介绍:

Elements:页面元素,可以进行编辑,保存后实时查看页面效果;

Network: 查看js模拟的http请求,例如下图中修改购物车中商品数量,可以实时的看到请求地址,直接上图。

2、点击请求地址,会把请求的头信息和响应信息等数据展示出来,此处非常便捷,展示样式比firebug更直观,直接上图,可以点击查看头信息,preview,响应信息,cookie,timeline对我们有用的。注意,preview是此处模拟http请求的发送数据,直接预览出来了。

3、Sources:次功能是js页面调试中最突出的功能,上图。

功能介绍:左侧sources目录可以展开,查看加载本页面所调用的资源,如js,css,php。此处先介绍断点调试,可以顺序的看到程序的执行过车,勾选右侧的Any XHR 按钮,上图。

4、一步一步执行,如添加数量的时候,可以看到右侧的call stock进程,可以看到此处出发了js中changePrice()函数,在此处我们可以进行逻辑分析了。或则在代码行处单击设置断点,英文选项是add breakpoints,单击右击都可以,最是好用,上图。

5、可以查看你设置的所有断点,右侧展开,如图,断点调试用的比较多,当然了还可以在js里直接写代码,查看实时数据变化,查看要注意ctrl+s 保存操作。

6、Timeline:次功能是查看页面性能,页面渲染速度的,一般是用不到的。测试人员可以查看,图中展示一些性能参数供参考,上图。

Profile:次功能主要测试加载文件速度参考,可以在此处上传我们的文件供测试用。点击 Load上传即可,一般用不着。

备注:Console:此功能是模拟js控制台,直接写代码,查看结果。高级功能使用时开启断点,查看变量的变化过程。还可以条用函数。

源地址 私信我吧

这段代码使用了node.js的异步利器 onRequest

var http = require("http") 

function onRequest(request, response) {

console.log("Request received.")

response.writeHead(200, {"Content-Type": "text/plain"})

response.write("Hello World")

response.end()

}

http.createServer(onRequest).listen(8888)

console.log("Server has started.")

~

测试服务器:

测试结果:

给大家搞的动画的流程

在新公司的第一个项目是区块链相关的管理后台和交易所,其中就涉及了很多的计算问题。而JavaScript因为存在计算的精度问题,所以直接计算就可能会导致各种各样的bug,为了解决这个问题,就要使用BigNumber.js这个库。

至于为什么JavaScript会有精度问题呢,可以看 这里 。简单来说就是因为: JavaScript中所有的数字(包括整数和小数)都只有一种类型–Number。它的实现遵循IEEE 754标准,使用64位固定长度来表示,也就是标准的double双精度浮点数。它的优点是可以归一化处理整数和小数,节省储存空间。而实际计算的时候会转换成二进制计算再转成十进制。进制转换之后会很长,舍去一部分,计算再转回来,就有了精度误差。

BigNumber.js是一个用于任意精度计算的js库。可以在  官方文档  的console中测试使用。也可以通过npm install bignumber.js --save来安装。然后 import BigNumber from 'bignumber.js' 来引入使用。他的大概原理是将所有数字当做字符串,重新实现了计算逻辑。缺点是性能比原生的差很多。

现在 TC39 已经有一个 Stage 3 的提案 proposal bigint,大数问题有望彻底解决。在浏览器正式支持前,可以使用 Babel 7.0 来实现,它的内部是自动转换成 big-integer 来计算,要注意的是这样能保持精度但运算效率会降低。

具体用法可以参考以下资料:

官方文档

bignumber.js使用记录

BigNumber 讲解

就不再敖述了,下边随便写点常用的方法:

// 转为 bignumberconstx=newBigNumber('123456789.123456789')// 转为 普通数字x.toNumber()// 格式化(小数点)x.toFormat()// '123,456,789.123456789'x.toFormat(3)// '123,456,789.123'// 计算x.plus(0.1)// 加法x.minus(0.1)// 减法x.times(0.1)// 乘法x.div(0.1)// 除法x.mod(3)// 取模/取余// 比较大小x.eq(y)// isEqualTo 的简写,是否相等x.gt(y)// isGreaterThan 的简写,是否大于x.gte(y)// isGreaterThanOrEqualTo 的简写,是否大于等于x.lt(y)// isLessThan 的简写,是否小于x.lte(y)// isLessThanOrEqualTo 的简写,是否小于等于// 取非,改变数字的正负号x.negated()