JavaScript如何调试有哪些建议和技巧附五款有用的调试工具

JavaScript08

JavaScript如何调试有哪些建议和技巧附五款有用的调试工具,第1张

浏览器开发者工具

我个人最喜欢Chrome开发者工具。虽然Safari和Firefox无法达到Chrome那么高的标准,但它们也在逐渐改善。在Firefox中,可以将Firebug和Firefox开发者工具组合使用。如果Firefox小组在改进内置开发者工具方面继续表现优异的话,Firebug有一天可能会被淘汰。

先把个人偏好放在一边,你应该能够在目标浏览器中对任意代码进行试验和调试。你的目标浏览器可能包括著名的IE8,也可能不包括。

要熟悉你自己选择的开发者工具。你还可以从IDE(集成开发环境)或者第三方软件获得额外的调试支持。

在各种调试工具中,调试的基础知识是相通的。事实上,我是在90年代从Borland的C开发者环境中学习的调试基础。断点、条件断点、监视与最新版Chrome开发者工具是完全相同的。2000年左右,我在Java中捕获到第一例异常。堆栈跟踪(Stack traces)的概念依然适用,即使JavaScript术语将其称作错误(Error),检查堆栈跟踪仍然和以前一样有用。

有些知识点是前端开发特有的。例如:

DOM检查

DOM断点

调试事件

内存泄露分析

断点

使用debugger语句可以在源代码中增加断点。一旦到达debugger语句,执行中断。当前作用域的上下文出现在控制台中,还有所有的局部变量和全局变量。将鼠标光标移到变量上可以查看变量的值。

在代码中还可以创建条件断点:

JavaScript

if (condition) { debugger}

还可以根据自己需要在开发者工具中插入断点和条件断点。在Chrome开发者工具中,在Sources视图中点击行号即可增加断点。如果在断点上点击右键并选择“编辑断点(Edit Breakpoint)”,你还可以增加断点条件。

节点变化的断点

如果你的任务是调试垃圾代码,你可能会有这样的问题:为什么DOM节点在执行过程中发生了改变。Chrome开发者工具提供了一种方便的断点,可用来检测元素树中的节点变化。

在Elements视图中,右键点击一个元素,从右键菜单中选择“Break on…”。

节点变化的断点

DOM断点的类型可能包括:

选定节点树状子目录(sub-tree)中的节点变化,

选定节点的属性发生变化,

节点被删除。

避免记录引用类型

当记录对象或数组时,原始类型的值在引用对象记录中可能会发生变化。当查看引用类型时一定要记住,在记录和查看期间,代码执行可能会影响观测到的结果。

例如,在Chrome开发者工具中执行以下代码:

JavaScript

var wallets = [{ amount: 0 }]setInterval( function() { console.log( wallets, wallets[0], wallets[0].amount )wallets[0].amount += 100}, 1000 )

记录的第二个和第三个属性的值是正确的,第一个属性中对象引用的值是不可靠的。当你第一次在开发者工具中显示这个属性时,amount域的值就已经确定了。无论你对同一个引用关闭并重新打开多少次,这个值都不会变化。

记录参考类型

永远记得你在记录什么。记录原始类型时,使用带断点的watch表达式。如果是异步代码,避免记录引用类型。

表格记录

在一些开发者工具中,你可以用console.table在控制台中记录对象数组。

尝试在你的Chrome开发者工具中执行下列代码:

JavaScript

console.table( [ { id: 1, name: 'John', address: 'Bay street 1' }, { id: 2, name: 'Jack', address: 'Valley road 2.' }, { id: 3, name: 'Jim', address: 'Hill street 3.' } ] )

输出是非常好看的表格。所有原始类型都立刻显示出来,它们的值反应记录时的状态。也可以记录复杂类型,显示内容为其类型,内容无法显示。因此,console.table只能用来显示具有原始类型值的对象构成的二维数据结构。

XHR断点

有时你可能会遇到错误的AJAX请求。如果你无法立刻确认提交请求的代码,XHR断点可以帮你节省时间。当提交某一特殊类型的AJAX时,XHR断点将会终止代码的执行,并将提交请求的代码段呈现给用户。

在Chrome开发者工具的Sources标签页中,其中一个断点类型就是XHR断点。点击+图标,你可以输入URL片段,当AJAX请求的URL中出现这个URL片段时,JavaScript代码将会中断。

事件监听器断点

Chrome开发者工具可以捕获所有类型的事件,当用户按下一个键、点击一下鼠标时,可以对触发的事件进行调试。

异常时暂停

Chrome开发者工具可以在抛出异常时暂停执行JavaScript代码。这可以让你在Error对象被创建时观察应用的状态。

异常时暂停

代码片段

Sources标签页左侧面板上有一个代码片段(Snippet)子标签页,可用于保存代码片段,帮你调试代码。

如果你坚持使用控制台调试,反复写相同的代码,你应该将你的代码抽象成调试片段。这样的话,甚至还可以把你的调试技巧教给你的同事。

Paul Irish发布过一些基本的调试代码片段,例如在函数执行前插入断点。审查这些代码片段,并在网上搜索其他代码片段,这是很有价值的。

在函数执行前插入断点

如果你可以得到函数调用的源代码,你还可以在函数调用前插入断点来终止函数的执行。如果你想调试f函数,用debug(f)语句可以增加这种断点。

Unminify最小化代码

(译者注:unminify 解压缩并进行反混淆)

尽可能使用 source map。有时生产代码不能使用source map,但不管怎样,你都 不应该直接对生产代码进行调试。

(译者注:sourcemap 是针对压缩合并后的web代码进行调试的工具)

如果没有source map的话,你最后还可以求助于Chrome开发者工具Sources标签页中的格式化按钮(Pretty Print Button)。格式化按钮{}位于源代码文本区域的下方。格式化按钮对源代码进行美化,并改变行号,这使得调试代码更加方便,堆栈跟踪更加有效。

格式化按钮只有在不得已时才会使用。从某种意义上来说,丑代码就是难看,因为代码中的命名没有明确的语义。

DOM元素的控制台书签

Chrome开发者工具和Firebug都提供了书签功能,用于显示你在元素标签页(Chrome)或HTML标签页(Firebug)中最后点击的DOM元素。如果你依次选择了A元素、B元素和C元素,

$0 表示C元素

$1 表示B元素

$2 表示A元素

如果你又选择了元素D,那么$0、$1、$2和$3分别代表D、C、B和A。

访问调用栈

JavaScript

var f = function() { g()} var g = function() { h()}var h = function() { console.trace('trace in h')}f()

Chrome开发者工具中的Sources标签页也在Watch表达式下面显示调用栈。

性能审查

性能审查工具通常是很有用的。这些工具可以用于防止内存泄露,还可以检测到你的网站哪里需要优化。由于这些工具并不了解你的产品,你可以忽略其某些建议。通常来说,性能分析工具能够有效范围,可以使你的网站显著优化。

审查工具举例:

Chrome开发者工具的Audit标签页

YSlow

熟能生巧

你可能熟悉某些调试技巧,其他技巧也会帮你节省不少时间。如果你开始在实践中使用这些技巧,我建议你几周之后重新阅读本文。你将会惊奇地发现,你的关注点在几周内就发生了变化。

五个常用的js调试工具

JavaScript被称作以原型(prototype)为基础的语言。这种语言有很多特色,比如动态和弱类型,它还有一等函数(first class function)。另一个特点是它是一个多范型(multi-paradigm)语言,支持面向对象、声明式、函数式的编程风格。

JavaScript最初被用作客户端语言,浏览器实现它用来提供增强的用户接口。JavaScript在很多现代的网站和Web应用程序中都有应用。JavaScript的一个很棒的功能也很重要,就是我确实可以用它来提高或改善网站的用户体验。JavaScript也可以提供丰富的功能和交互的组件。

JavaScript在这技术高速发展的同时变得非常受欢迎。因为受欢迎JavaScript也改进了许多,修改JavaScript脚本有很多事要做。这次我们为开发者带来了几个非常有用的JavaScript调试工具。

1)Drosera

可以调试任何WebKit程序,不仅仅是Safari浏览器。

2)Dragonfly

源代码视图有语法高亮,可以设置断点。强大的搜索功能,支持正则表达式。

3)Getfirebug

可以在任何网页编辑、调试和实时监视CSS、HTML和JavaScript。

4)Debugbar

5)Venkman

Venkman是Mozilla的JavaScript调试器名称。它旨在为以Mozilla为基础的浏览器(Firefox, Netscape 7.x/9.x and SeaMonkey)提供一个强大的JavaScript调试环境。

JS-(奸商JianShang)的首字母,用以指代奸商特别是攒机商,但是网友立场几乎一边倒地站在商家反方,于是无论商家好坏都叫JS。

随着IT业发展,攒机商利润已经很薄,这种对立情绪也淡了很多。但是代称还是没有变,JS逐渐演变成“商家”的一种代称,有一种戏谑的成分。

CR

[编辑本段]股市CR指标

CR指标又叫中间意愿指标、价格动量指标,它和AR、BR指标又很多相似之处,但更有自己独特的研判功能,是分析股市多空双方力量对比、把握买卖股票时机的一种中长期技术分析工具。

CR指标的原理和计算方法

一、CR指标的原理

CR指标同AR、BR指标有很多相似的地方,如计算公式和研判法则等,但它与AR、BR指标最大不同的地方在于理论的出发点有不同之处。CR指标的理论出发点是:中间价是股市最有代表性的价格。

为避免AR、BR指标的不足,在选择计算的均衡价位时,CR指标采用的是上一计算周期的中间价。理论上,比中间价高的价位其能量为“强”,比中间价低的价位其能量为“弱”。CR指标以上一个计算周期(如N日)的中间价比较当前周期(如日)的最高价、最低价,计算出一段时期内股价的“强弱”,从而在分析一些股价的异常波动行情时,有其独到的功能。

另外,CR指标不但能够测量人气的热度、价格动量的潜能,而且能够显示出股价的压力带和支撑带,为分析预测股价未来的变化趋势,判断买卖股票的时机提供重要的参考。

二、CR指标的计算方法

由于选用的计算周期不同,CR指标也包括日CR指标、周CR指标、月CR指标、年CR指标以及分钟CR指标等很多种类型。经常被用于股市研判的是日CR指标和周CR指标。虽然它们计算时取值有所不同,但基本的计算方法一样。

以日CR指标为例,其计算公式为:

CR(N日)=P1÷P2×100

式中,P1=∑(H-YM),表示N日以来多方力量的总和

P2=∑(YM-L),表示N日以来空方力量的总和

H表示今日的最高价,L表示今日的最低价

YM表示昨日(上一个交易日)的中间价

CR计算公式中的中间价其实也是一个指标,它是通过对昨日(YM)交易的最高价、最低价、开盘家和收盘价进行加权平均而得到的,其每个价格的权重可以人为地选定。目前比较常用地中间价计算方法有四种:

1、M=(2C+H+L)÷4

2、M=(C+H+L+O)÷4

3、M=(C+H+L)÷3

4、M=(H+L)÷2

式中,C为收盘价,H为最高价,L为最低价,O为开盘价

从四种中间价的计算方法来看,对四种价格的重视程度是不一样的,三种都是选用了收盘价,可见,收盘价在技术分析中的重要性。

和其他技术指标一样,在实战中,投资者不需要进行CR指标的计算,主要是了解CR的计算方法,以便更加深入地掌握CR指标的实质,为运用指标打下基础。

CR指标的一般研判标准

CR指标的一般研判标准主要集中在CR数值的取值范围、CR指标曲线的形态以及CR指标曲线与股价曲线的配合等方面来考察。

一、CR指标的取值

1、从CR的计算公式我们可以看出,CR指标很容易出现负值,但按通行的办法,在CR指标研判中,一旦CR数值出现负值,一律当成0对待。

2、和AR、BR指标一样,CR值为100时也表示中间的意愿买卖呈平衡状态。

3、当CR数值在75——125之间(有的设定为80——150)波动时,表明股价属于盘整行情,投资者应以观望为主。

4、在牛市行情中(或对于牛股),当CR数值大于300时,表明股价已经进入高价区,可能随时回挡,应择机抛出。

5、对于反弹行情而言,当CR数值大于200时,表明股价反弹意愿已经到位,可能随时再次下跌,应及时离场。

6、在盘整行情中,当CR数值在40以下时,表明行情调整即将结束,股价可能随时再次向上,投资者可及时买进。

7、在熊市行情末期,当CR数值在30以下时,表明股价已经严重超跌,可能随时会反弹向上。投资者可逢低吸纳。

8、CR指标对于高数值的研判的准确性要高于CR对低数值的研判。即提示股价进入高价位区的能力比提示低价位区强。

二、CR指标曲线的形态

CR指标的形态的研判主要是针对CR曲线在顶部和低部出现的不同形态而言的。

1、当CR曲线在高位形成M头或三重顶等顶部反转形态时,可能预示着行情由强势转为弱势,股价即将大跌(特别是对于前期涨幅过大的股票),如果股价的K线也出现同样形态则更可确认,其跌幅可以用M头或三重顶形态理论来研判。

2、当CR曲线在低位出现W底或三重底等底部反转形态时,可能预示着行情由弱势转为强势,股价即将反弹向上,如果股价K线也出现同样形态则更可确认,其涨幅可以用W底或三重底等形态来判断。

3、相对而言,CR指标的高位M头或三重顶的判断的准确性要比其底部的W底或三重底要高。

三、CR曲线与股价曲线配合使用

在一定程度上,CR指标具有领先股价走势的示警作用,尤其是在股价见顶或筑底方面,能能比股价曲线领先出现征兆。若股价曲线与CR指标曲线之间出现背离现象,则可能预示着股价走势即将反转。CR指标曲线与股价曲线的配合使用主要从以下几方面进行的。

1、当CR指标曲线节节向上攀升,而股价曲线也同步上升,则意味着股价走势是处于强势上涨的阶段,股价走势将维持向上攀升的态势,投资者可坚决持股待涨。

2、当CR指标曲线继续下跌,而股价曲线也同步下跌,则意味着股价走势是处于弱势下跌的阶段,弱势格局难以改变,此时,投资者应以持币观望为主。

3、当CR指标曲线开始从高位掉头向下回落,而股价曲线却还在缓慢向上扬升,则意味着股价走势可能出现“顶背离”现象,特别是股价刚刚经历过了一段比较大涨幅的上升行情以后。当CR指标曲线在高位出现“顶背离现象”后,投资者应及时获利了结。

4、当CR指标曲线从底部开始向上攀升,而股价曲线却继续下跌,则意味着股价走势可能出现“底背离”现象,特别是股价前期经过了一轮时间比较长、跌幅比较大的下跌行情以后。当CR指标曲线在底部出现“底背离”现象以后,投资者可以少量分批建仓。

5、CR指标对“顶背离”研判的准确性要远远高于对“底背离”的研判。

CR指标的特殊分析方法

由于在国内目前钱龙和分析家这两种具有代表性的股市分析软件中,CR指标有两种不同的界面,因此,CR指标的特殊研判也主要集中这种软件的不同分析方法上。

一、分析家软件上的CR指标的研判

在分析家软件上,日CR指标主要是由日CR曲线和CR的MA日均线组成。其中,MA由三条不同周期的曲线构成,分别为MA1、MA2、MA3,它们可以选用不同的周期参数,MA1、MA2、MA3的计算移动平均的天数,起始天数的参数一般为5、10、20。日ROC指标的研判就是围绕这四条曲线间的不同的关系展开。

CR曲线与CR的MA曲线的关系除了我们前面提到的形态和背离等研判方法外,更重要的是在于CR曲线和CR的三条MA曲线的交叉情况的研判。其主要分析方法如下:

1、当CR曲线和三条MA曲线在底部拈合在一起,并在一个狭窄区域(最好位于75——150之间)里横向移动时,表明股价在底部区域横盘筑底,此时,投资者应注意股价的动向并可以开始逢低建仓。一旦成交量开始慢慢放大,股价也缓慢向上时,投资者可以加大建仓量。

2、当CR曲线开始脱离前期底部横盘的狭窄区域,并从下向上开始突破三条MA曲线时,表明股价的底部整理可能结束,股价的强势特征开始显现,一旦CR曲线向上突破最后的一条MA曲线时,并有比较大的成交量配合时,为较佳的买入信号。投资者应及时买入。

3、当CR曲线向上突破三条MA曲线并快速向上攀升超过150数值时,表明股价的强势特征已经确立,投资者应及时短线买入或持股待涨。

4、当CR曲线快速向上移动后,三条MA曲线也同时上扬,表明股价继续维持强势上攻态势,投资者应一路持股。

5、当CR曲线经过一段较短时间的快速上升并远离前期的整理区域,而且,股价已经涨幅很大的情况下,投资者应密切留意CR曲线的动向。

6、当CR曲线在高位(200以上)开始向下掉头时,表明股价的强势行情即将结束,是较佳的卖出信号,投资者应及时卖出股票。

7、当CR曲线从高位向下运动并首次跌破最上面的一条MA曲线时,表明股价的强势行情已经结束,投资者应及时清仓出局。

8、当CR曲线从高位向下运动时,其他三条MA曲线也开始一起向下运行时,表明股价的弱势行情已经开始,投资者应以持币观望为主。

9、当CR曲线向下突破最后一条MA曲线时,表明股价的弱势行情已经确立,股价将加速下跌,投资者应坚决持币观望。

10、当CR曲线跌破三条MA曲线以后,股价走势将进入一个漫长的探底过程,投资者能做的事就是耐心等待,直到股价运行的弱势行情显露结束的迹象。

一种移动信息终端

BB=BlackBerry 所谓“黑莓”(BlackBerry)是指一种移动电子邮件系统终端,可以配合手机使用。 黑莓的来由 在“911事件”中,美国通信设备几乎全线瘫痪,但美国副总统切尼的手机有黑莓功能,成功地进行了无线互联,能够随时随地接收关于灾难现场的实时信息。之后,在美国掀起了一阵黑莓热潮。美国国会因“911事件”休会期间,就配给每位议员一部“Blackberry”,让议员们用它来处理国事。 什么是黑莓呢? 从技术上来说,黑莓是一种采用双向寻呼模式的移动邮件系统,兼容现有的无线数据链路。它出现于1998年,RIM的品牌战略顾问认为,无线电子邮件接收器挤在一起的小小的标准英文黑色键盘,看起来像是草莓表面的一粒粒种子,就起了这么一个有趣的名字。目前有内置“黑莓”功能的手机产品。它的终端包含一个非常小的标准电脑键盘,黑色的按键看上去如同草莓表面的黑籽儿,因此才得到这个昵称。从外观上看,“黑莓”产品与其说是手机,不如说更像是具备通话功能的商务通或掌上电脑。使用这种设备,手机用户将可以随时与电脑互发电子邮件。

亚马逊数据分析工具Sorftime还可以,但更推荐Jungle Scout中的JS 插件,Jungle Scout在亚马逊产品数据分析领域,有超过60万全球卖家正在使用Jungle Scout ,每天处理20亿个数据点,数据精准度高达90% ,支持亚马逊17个站点。

JS插件是亚马逊数据分析工具的必备软件,其新功能有:

1、快速透视,Listing页面数据。进入任一listing详情页,无需点击,JS插件即自动呈现页面内嵌数据:月销量、日销量、价格和排名的历史趋势等关键数据,便于一目了然商品生命周期,分析热销潜力商品;知己知彼,合理安排自己的运营策略。

2、解放运营双手,批量营销。通过JS插件批量发送邮件,效率提升80%,同时也保留了“单独发送请求”的功能,做精细化运营的卖家可以通过控制变量测试发送的效果。JS插件还能智能地识别出发起过退货、换货申请的买家。针对这些买家,系统会自动过滤,不发送邀请提醒,从而减少带来的差评概率。

想要了解更多有关数据分析的相关信息,推荐咨询Jungle Scout。Jungle Scout倡导数据化智能选品、打造精品店铺、通过高效运营技巧和策略来获得中国品牌跨境出海成功,是亚马逊跨境电商行业的领军品牌,影响了全球超过100万亚马逊从业者;并成为全球成功卖家的首选,实力强大,值得选择。}