我在C/C++/Objective-C方面非常有经验,在过去的几天里,我一直在尝试html/css/JS,我发现它非常令人沮丧。
一次又一次,我被发现由于复制/粘贴等导致的语法错误或未声明的变量,其后果是代码突然停止工作,然后我不得不挠头并找出原因。
最痛苦的事情是求助于在代码中散布警报,所有事情都失败了,以便追踪原因。我知道有新的控制台对象用于日志记录,但它似乎不能与Komodoedit或jsFiddle一起工作?这就是我一直在用的。
有没有办法使用这些工具,或者替代工具,让我可以像在其他语言中一样,在调试器中逐行调试代码?或者,除了jslint之外,还有什么技巧可以在执行代码之前轻松检测代码中的问题?
我不想使用任何内置支持日志等的库,因为我发现它们(好吧,JQuery/JQuery mobile )极大地降低了iPhone上的加载时间,所以我想专注于纯JS。
我的目标浏览器只是iOS,但我大部分时间都在使用Chrome的Komodoedit,每隔几个小时就会在iPhone上试用一下
谢谢
发布于 2012-09-07 06:29:35
您需要几个工具。
First,给自己找一个真正的调试器。我用的是Chrome内置的那个。Safari和Firebug中内置了一个类似的插件,可以作为Firefox的附加组件。这将允许您设置断点和单步执行您的代码,并查看到底发生了什么。
Second,非常习惯通过jsLint运行你的代码。这将向您显示许多明显的拼写错误,并鼓励您从第一天开始就编写健壮的代码。
Third,开始在strict模式下写入。这将再次防止一些明显的打字错误,并迫使你养成一些好习惯。
Fourth,在需要时使用console.log()。一旦有了调试器,它的输出将显示在调试器的调试控制台中,用于浏览器中的任何页面,包括jsFiddle页面。您必须在jsFiddle中的正确框架上调用调试器,然后它将正常工作。对于jsFiddle,我同时使用常规调试器和console.log()。在jsFiddle和调试器中需要进行一些计算,才能找到您自己的代码设置断点的位置,但是一旦找到,就很容易使用。
在第五个中,javascript根本不是C++。虽然语法看起来很熟悉,但使用匿名函数、闭包、对象和原型的方式是非常不同的。作为一个在学习javascript之前用C++编程了很多年的人,我非常感谢我现在能用javascript做的事情,这是用C++做的更多的工作,但它花了一段时间让我的大脑进入新的思维模式。在javascript开发的头几年,我花了太多的时间试图模拟C++技术,而不仅仅是学习在javascript中实现这一目标的更好的方法。
Sixth,你将不得不改变你编写和测试代码的方式,因为缺乏一个能为你查找错误的编译器。我记得在C++时代,当我需要重构一些东西时,我可以做一堆更改,然后让编译器找到我需要修复语法的所有其他地方。你不能用javascript做到这一点。当您进行大量更改时,您可以通过jsLint来查找一些问题,然后您需要执行每条路径以确保一切正常。这是一种痛苦。
第七届,找到单元测试的策略/工具。一旦项目获得了超过几个函数的长度,您将从构建单元测试中受益良多,您可以在进行重大更改时随时运行这些单元测试。与没有单元测试相比,它们都会在更短的时间内为您找到问题,并且当您发现需要重构和清理代码时,它们会给您勇气,因为您知道单元测试会告诉您一切是否正常。这是额外的前期工作,在以后的道路上会有很多次回报。
发布于 2012-09-07 06:28:18
火狐有一个名为FireBug的插件,这对调试CSS/javascript非常有帮助,是的,它确实有能力逐步通过脚本和命令行,在那里你可以尝试各种javascript表达式。我敢肯定Chrome也有类似的功能。
发布于 2012-09-07 06:33:41
下面是一篇文章,其中列出了用于调试javascript advance-javascript-debugging-techniques的工具
https://stackoverflow.com/questions/12309312
复制相似问题