首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给第一次尝试Javascript的有经验的开发人员的建议

给第一次尝试Javascript的有经验的开发人员的建议
EN

Stack Overflow用户
提问于 2012-09-07 06:24:49
回答 4查看 83关注 0票数 1

我在C/C++/Objective-C方面非常有经验,在过去的几天里,我一直在尝试html/css/JS,我发现它非常令人沮丧。

一次又一次,我被发现由于复制/粘贴等导致的语法错误或未声明的变量,其后果是代码突然停止工作,然后我不得不挠头并找出原因。

最痛苦的事情是求助于在代码中散布警报,所有事情都失败了,以便追踪原因。我知道有新的控制台对象用于日志记录,但它似乎不能与Komodoedit或jsFiddle一起工作?这就是我一直在用的。

有没有办法使用这些工具,或者替代工具,让我可以像在其他语言中一样,在调试器中逐行调试代码?或者,除了jslint之外,还有什么技巧可以在执行代码之前轻松检测代码中的问题?

我不想使用任何内置支持日志等的库,因为我发现它们(好吧,JQuery/JQuery mobile )极大地降低了iPhone上的加载时间,所以我想专注于纯JS。

我的目标浏览器只是iOS,但我大部分时间都在使用Chrome的Komodoedit,每隔几个小时就会在iPhone上试用一下

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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来查找一些问题,然后您需要执行每条路径以确保一切正常。这是一种痛苦。

第七届,找到单元测试的策略/工具。一旦项目获得了超过几个函数的长度,您将从构建单元测试中受益良多,您可以在进行重大更改时随时运行这些单元测试。与没有单元测试相比,它们都会在更短的时间内为您找到问题,并且当您发现需要重构和清理代码时,它们会给您勇气,因为您知道单元测试会告诉您一切是否正常。这是额外的前期工作,在以后的道路上会有很多次回报。

票数 5
EN

Stack Overflow用户

发布于 2012-09-07 06:28:18

火狐有一个名为FireBug的插件,这对调试CSS/javascript非常有帮助,是的,它确实有能力逐步通过脚本和命令行,在那里你可以尝试各种javascript表达式。我敢肯定Chrome也有类似的功能。

票数 0
EN

Stack Overflow用户

发布于 2012-09-07 06:33:41

下面是一篇文章,其中列出了用于调试javascript advance-javascript-debugging-techniques的工具

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12309312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档