我应该在CoffeeScript之前学习JavaScript吗?

Ski*_*33k 21 coffeescript

我正在寻找有关学习CoffeeScript的一些见解,而无需学习纯JavaScript.

我目前正在编写CSS/SASS和HTML/HAML,我想学习JavaScript.我知道非常基本的JavaScript,但我没有把它拿得很远.我非常喜欢CoffeeScript的语法,这对我来说更有意义.

学习CoffeeScript会搞砸我的学习吗?

Lar*_*one 44

在这一点上,这个问题有两个答案.Asawyer说你必须知道JavaScript才能调试CoffeeScript.Trevor建议你理想情况下应该至少是一个中级JavaScript程序员.我会给你第三个观点.

熟练掌握CoffeeScript的最快方法是开始使用CoffeeScript编写,但希望随时学习JavaScript.你仍然需要学习很多关于Javascript的知识,包括标准对象(对象,数组,日期,数学,XHR等).但是你可以从CoffeeScript的角度学习其他东西.例如,Trevor的书中有一篇关于jQuery的伟大章节.每当我需要重新进行DOM操作时,我就会去那里.另一个例子是范围界定; 一旦你理解了瘦箭头和胖箭头(CoffeeScript概念)之间的区别,你就会知道在JavaScript中处理闭包范围的两种好方法.

如果你不了解面向对象的编程,我建议你从一本像HeadFirst Design Patterns这本书开始,尽管它是基于java的,因为这是我知道为OO重新编程你的大脑的最快方式.从JavaScript开始学习良好的OO实践很难......使用CoffeeScript不那么难.

证据

我有Java,Python和ActionScript的背景,但是我在3个月前开始使用CoffeeScript,我已经足够快地编写了4,500行生产代码,包括2个帮助CoffeeScript的原始项目开发(CoffeeDocTestCoda的Line Commands)和我的博士工具的主要工作叫做Lumenize,以及另外两个CoffeeScript项目(CoffedocCoda的CoffeeScript模式).我从未明确开始编写或学习JavaScript.

进一步的逻辑

我的结论完全不基于我自己的经历.以下是其他原因:

  1. 您可以避免浪费时间学习所有疣都在JavaScript中.我还是不知道==和===之间的区别,我不在乎![更新:现在我知道区别但是谁想要'1',字符串要= = 1,数字?我仍然乐于使用===到处都是].在什么浏览器和什么情况下忘记分号是安全的?您的代码在测试期间可以正常工作,然后在其他人的浏览器上失败.当然有像jslint这样的工具但是需要时间来增加它们的使用.直接去CoffeeScript跳过那段时间.

  2. 您将学习使用CoffeeScript创建类和继承比使用JavaScript更好的OO习惯.

  3. 列表理解和语言支持的循环改变了你的习惯.JavaScript开发人员经常使用函数回调样式来迭代集合(例如$().each()).使用这样的功能样式效率要低得多,但它比JavaScript本身提供的语法更清晰.使用CoffeeScript,您可以获得本机实现的速度,并且具有比jQuery语法更好的可读性.

  4. 调试参数被夸大了.编译代码时,将保留所有标识符和整体结构.在编译的JavaScript中很容易看到自己的代码.起初,我必须研究我的CoffeeScript是如何转换的,但这就是我学会编写"好"JavaScript的方法.现在,我可以轻松阅读已编译的JavaScript.


asa*_*yer 23

是的,绝对先学习javascript!Coffeescript编译成它,当客户端运行你的代码时,它将是原始的javascript.您如何在不了解语言的情况下调试它?

  • 和Javascript一样! (2认同)

Tre*_*ham 13

Smooth CoffeeScript的互动书旨在将CoffeeScript作为第一语言教授.但是大多数资源,包括我自己的书" CoffeeScript:Accelerated JavaScript Development",都是针对那些拥有中级JavaScript知识的人.JavaScript的创建者布兰登·艾奇(Brendan Eich)模糊了这本书,称它"帮助读者在学习CoffeeScript的过程中成为更好的JavaScripters".

所以,我建议先做至少一些JavaScript教程(比如Codecademy上的那些),然后考虑投资一本关于CoffeeScript的书.;)