JavaScript 要如何入门 - V2EX

431 阅读15分钟
原文链接: www.v2ex.com
60 回复  |  直到 2015-02-24 15:22:04 +08:00
vzch   2015-02-20 13:44:55 +08:00   ♥ 1 就一条,善用搜索
billwsy   2015-02-20 13:46:59 +08:00 @vzch 之前也一直试着用搜索来学习新知识,但是对于一个全新的话题要怎么比较全面的入门呢?能不能分享一下经验?
vzch   2015-02-20 13:53:13 +08:00   ♥ 1 这必然不是新话题用站内搜索和 Google 选了几个链接 /t/152013 /t/126113
developer.mozilla.org/en-US/Learn…
stackoverflow.com/questions/1…
www.codecademy.com/en/tracks/j…
marcfizzy   2015-02-20 13:54:40 +08:00   ♥ 1 referrals.trhou.se/jamiefang
英语好的话可以看。14天免费。
wfifi   2015-02-20 14:12:35 +08:00 via Android   ♥ 1 弄本靠谱的书系统学下
billwsy   2015-02-20 14:16:07 +08:00 via iPhone @wfifi 我也是这么想的,从上面的链接里得到了不少资源,不知道您有什么建议吗?
lxrmido   2015-02-20 14:18:44 +08:00   ♥ 3 把逼格降下来……
看w3school
wfifi   2015-02-20 14:25:17 +08:00 via Android   ♥ 1 @billwsy 我也说不上有哪些书,搜到一博文转给你http://m.baidu.com/from=942g/bd_page_type=1/ssid=0/uid=0/pu=usm%400%2Csz%401320_1001%2Cta%40iphone_2_4.3_3_534/baiduid=D06E4C031BDA18422B8B851D602AE3C4/w=0_10_javascript%E4%B9%A6%E5%8D%95/t=iphone/l=3/tc?ref=www_iphone&lid=13361741211869315281&order=1&vit=osres&tj=www_normal_1_0_10_title&m=8&srd=1&cltj=cloud_title&dict=30&sec=1470&di=db302e7e872ee780&bdenc=1&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRASDXwAinGUoCb9m3QgcVMhiGu0VAo7RF2u_9Ss7wq7Ufbdenq6RO1HRAPfANq1sL4V_
vzch   2015-02-20 14:29:38 +08:00 好吧,说点实际的。学 JavaScript 我走过不少弯路,就看书来说,由于前端更新的很快,旧的没必要看了, Javascript 高级程序设计比犀牛适合入门,然后蝴蝶犀牛,其他的有精力再看吧,写东西。漏了一个去年在用的好资源 docs.webplatform.org/wiki/Main_P…
W3school 因为之前有不少错误,所以喷的人较多,这两年改了多少不确定,反正国内那个和国外的 w3school 都不算权威资料
jianghu52   2015-02-20 14:57:55 +08:00   ♥ 1 弱弱的问一句,啥叫会。最简单的调onclick方法也是js。复杂的angularjs也是js。
arachide   2015-02-20 15:04:58 +08:00   ♥ 1 javascript不等于jquery 也不等于前端

单独学最好
akfish   2015-02-20 15:39:42 +08:00   ♥ 1 直接撸项目是最好的学习途径。
语言本身没什么好学的,当然除非这是你第一门语言。
billwsy   2015-02-20 15:50:05 +08:00 @vzch 您给的链接非常适合初学者入门,谢谢!
sadaharu09   2015-02-20 15:50:35 +08:00 via iPhone   ♥ 1 www.jikexueyuan.com
billwsy   2015-02-20 15:51:19 +08:00 @akfish 谢谢,我有一点C++/Python的基础。我想换了工作之后马上就有机会接触真的项目啦。
arachide   2015-02-20 16:23:22 +08:00   ♥ 1 @billwsy 纯算法代码 javscript和c++几乎无需更改
billwsy   2015-02-20 16:28:14 +08:00 @arachide 恩,我想我主要需要学习一下DOM等Web开发的基本概念。
scarlex   2015-02-20 16:37:07 +08:00   ♥ 1 不知道你是要写前端还是后端?
前端的 js 基本都是围绕 dom 在展开,后端的 js 基本就是 Node.js / io.js 了。

如果要了解 js 的语法、特性、坑的话,可以看看 《JavaScript语言精粹》。
如果是前端的 js 的话,可以看看 《JavaScript DOM编程艺术》,接触一下原生的 dom 操作,对以后写前端很有帮助。
如果是后端 js 的话,入门书好像不多,朴灵的那本《深入浅出Node.js》感觉不适合入门,反而那些《Node.js实战》可能看起来会简单点。

之后就是各种库的使用了,那个阶段你直接看官方文档就行了。
arachide   2015-02-20 16:45:48 +08:00 @billwsy dom htl/css简单使用范围有限
javascript可以上天入地下海 无所不能
haozhang   2015-02-20 17:21:40 +08:00 via iPhone   ♥ 2 javascript dom编程艺术
javascript 高级程序设计
javascript good parts (蝴蝶书)
javascript web富应用开发(猫头鹰书)

从上倒下依次刷
tonghuashuai   2015-02-20 17:37:58 +08:00 一边学一边用
FrankFang128   2015-02-20 17:38:12 +08:00 via Android 阮一峰
jacob   2015-02-20 17:54:19 +08:00 via iPhone javascript是最简单的语言,不是语言多简单,是资料实在太丰富了,随便一个特性,网上的资料都一堆。所以说是最好学的。
learnshare   2015-02-20 18:03:08 +08:00   ♥ 1 自己整理的资料,质量一般,可以作为入门材料

JS 核心
github.com/LearnShare/…
浏览器端
github.com/LearnShare/…
服务端
nodejs.org/
stonestyle   2015-02-20 19:39:12 +08:00   ♥ 3 希望对你有用 转「译」如何正确学习JavaScript
www.crimx.com//2014/05/15…
hanan321   2015-02-20 20:59:42 +08:00 @haozhang 我就是按照20L说的这么刷的。
blacktulip   2015-02-20 21:46:59 +08:00 via iPhone 先整明白正则…… 我觉得最难搞就是这个
liubiantao   2015-02-20 22:45:45 +08:00 @blacktulip 整明白这个也入不了门啊, 毕竟楼主需要的是入门
ryuutanyou   2015-02-20 23:02:27 +08:00 感觉每隔一段时间都会有这个问题,已经被问烂了,知乎上一搜一大把。
railgun   2015-02-21 02:26:52 +08:00 我是从http://www.w3school.com.cn/ 上入门的,然后用chrome的控制台多试验几次,基本上就能搞懂了。再自己弄个项目练练手。自我感觉现在是刚入门的状态吧。
然后有几个概念比较难理解,闭包和promise。闭包现在基本上弄懂了,promise刚接触,还没弄明白。
jokcy   2015-02-21 10:15:40 +08:00 via Android @akfish 不能这么说,需要本身的掌握对将来的学习决定有好处的。至少要理解js的类,继承,闭包,自己一些将来的比如promise什么的,不然后面学习会有坑
sammo   2015-02-21 11:02:34 +08:00 建议以最快的速度去玩 js 库和框架,包括 gulp 这类工具
www.ruanyifeng.com/blog/2010/0…
javascript.ruanyifeng.com/#tool
javascript.ruanyifeng.com/nodejs/expr…
elegzg   2015-02-21 11:12:16 +08:00 @arachide 你看哪本书学习的?
sammo   2015-02-21 11:12:25 +08:00 知识面要广。
elegzg   2015-02-21 11:13:46 +08:00 感觉JS比Java还难,楼主最好别碰,会被坑死
sammo   2015-02-21 11:28:21 +08:00 对于如何选择材料,推荐 walkthrough + cookbook 之类的东西,上手快


这篇文章也可能能启发一下您的总体学习思路 ( 不单单对于 js 这门语言 ) ,千万不要低估自己的学习能力。
blog.eqoe.cn/posts/faq.h…
lijsh   2015-02-21 11:47:14 +08:00 www.douban.com/doulist/131…

《JavaScript DOM编程艺术》是很多人推荐JavaScript入门的第一本书,这是一本优点与缺点同样明显的书,优点是够简单,主要都是讲浏览器端与DOM相关的JavaScript,方便你quick & dirty地开始;缺点是对JavaScript语法的讲解非常缺乏,书中甚至有一些JavaScript的反模式(如给setTimeout传字符串而不是函数引用)。
《锋利的jQuery》是难得的国产好书,讲的是jQuery库的入门,看完这本书你应该能高效地处理浏览器端的脚本了。
一直到《JavaScript高级程序设计》才比较系统地讲到JavaScript的本质,包括数据类型、函数、数列、原型继承、闭包等JavaScript独有的概念,当然也包括浏览器端的脚本处理。

之后就可以自己随便看点什么了,包括订阅博客、看官方文档什么的。
lijsh   2015-02-21 11:49:08 +08:00 看书的本质是求知,最最重要的是要自己多写,多看看别人代码是怎样实现,单看书没用。
akfish   2015-02-21 12:11:30 +08:00   ♥ 1 @jokcy 不放到工程的背景里去学OOP一套东西,很容易就会染上过度设计的毛病
不放到工程背景里去看闭包、promise,可能纠结N久都对这两者真正的意义和作用似是而非

花30分钟大概看下JS的language spec,搞定语法直接开始撸项目
项目经验告诉我需要用OOP,查文档花5分钟就能学会JS的OOP
项目经验告诉我需要用FP、lambda之类的东西,查文档花5分钟就能知道JS闭包的存在
撸项目遇到了callback pyramid of doom,查文档花5分钟就能知道promise的存在
项目撸完,知识点差不多覆盖完,还有第一手的实践经验。
可能别人才看完教材,正在纠结第一个类要怎么命名才好。

按教材顺序线性学习不仅事倍功半,还不易于直接和你已有的知识体系融合,大量新技术没教材怎么办?
找个项目来做,启发式的寻找解决方案,学到的东西才牢固
Agromania   2015-02-21 12:15:05 +08:00 可以从jQuery入手,尝试自己实现一些常见效果,比如内容折叠,TAB切换,幻灯片
binarymann   2015-02-21 12:54:42 +08:00 @akfish 同意!但是我有个后续的问题,你提到了项目是关键,但如何找到一个合适能够涵盖到这些知识点的项目呢?就拿我自己来说吧,当时学Rails的时候也是通过项目上手,做了个类似留言板(感觉学web框架不少都是用留言板练手的 :),基本知识都通过实践了解了,但是由于视野窄,就深入不下去了,回到JS,譬如我用JS做个什么小项目,最主要的时候是凭我对JS的肤浅了解,根本就用不到FP、lambda、promise这些知识到项目中,导致练来练去还是CRUD...望指点!
jamlee   2015-02-21 13:06:18 +08:00 mdn 觉得是个很权威,很好的网站。
jamlee   2015-02-21 13:07:29 +08:00 @FrankFang128 阮一峰的书说实在的 不是特别适合看。总感觉很怪。
akfish   2015-02-21 13:07:50 +08:00   ♥ 1 @binarymann 要根据自己的情况循序渐进,有时候一个项目覆盖不完所有知识点很正常,多撸几个就行,而且项目太大超出自己的能力范围很容易烂尾。
要提升的话,找人做code review,多看别人的代码,看下别人是怎么实现同样的功能的,然后再试着重构自己的项目。
还有就是看一些框架的源码,尝试做一个粗略的clone版,实现核心功能达到学习目的就行。
如果做了N个项目还是感觉在撸同样的内容的话,就要think out of box,尝试去做一些没人做/极少人做的东西。
vzch   2015-02-21 13:32:40 +08:00 @jamlee 阮老师的文章要配合朴灵的“注解”看,你懂的。他翻译的《黑客与画家》还不错
vzch   2015-02-21 13:39:34 +08:00 @stonestyle 这个推荐是有点问题的,《JavaScript权威指南》不适合初学看,作为第一本不合适。《JavaScript高级程序设计》虽然名字带“高级”,基础和细节讲得更好,第三版翻译的还可以,我始终觉得对象和函数部分,高程要讲的比权威指南好
jokcy   2015-02-21 13:58:58 +08:00 via Android @akfish 我明白你的意思了。不过我要说这样学习比较适合有编程基础的,最好有oop编程基础。不然当他们遇到这样的需求可能会根本想不到这个概念,从而踩到一个深坑里面去。所以我比较建议在使用一门技术或一门语言时至少通览一遍概念。

目前我个人也是你这样的学习方式,但是不知道题主是什么样的状态?
yangkeao   2015-02-21 14:05:37 +08:00 javaScript 需要学??//就当我没说过

我总觉得javaScript是语法最简单最混乱的语言,随便怎么写都是对的。。呜呜

有一点OOP基础,什么都好办~~~
sneezry   2015-02-21 14:16:35 +08:00 via iPhone 我是在w3school入门的,虽然讲解不深,但简单明了的例子和亲自参与实践,绝对比一本厚重的书有吸引力。入门了再看书补习啦。
vzch   2015-02-21 14:20:48 +08:00 有没有 OOP 你都要踩坑,传统的 OOP(如Java) 基于类的继承,JS 基于原型继承。而且 JS 的函数用法要比 C、Java 灵活,这也是坑的来源之一,刚开始觉得各种诡异风格那真是恶心
akfish   2015-02-21 14:58:41 +08:00 @jokcy 所以我说“除非这是第一门语言”嘛。
而且学习方法也并不是非此即彼的,lz可以根据自己情况决定预备知识要学到个什么程度再开始撸代码。
一般有点基础的,都没太大的必要把教材全啃完再动手。
lxrmido   2015-02-21 15:00:58 +08:00 在说JS之前……
也许可以先看看这个CSS
jokcy   2015-02-21 15:32:06 +08:00 via Android @akfish 恩,其实第一门语言或者换个说法,编程基础还是非常重要的。有这个基础后面学习其他技术速度那是飞起来的
StrayBugs   2015-02-22 01:34:06 +08:00 1. 少走弯路,[《如何正确学习 JavaScript 》](http://www.crimx.com/2014/05/15/how-to-learn-javascript-properly/)
2. 善用(google)搜索,会用英文,会在关键字后面加上 mdn
3. 键盘啪啪啪,练习不能停
billwsy   2015-02-22 13:14:12 +08:00 via iPad @arachide 能解释一下为什么js无所不能吗?是因为node.js有很强大的能力吗?
billwsy   2015-02-22 13:16:00 +08:00 via iPad @haozhang 谢谢,我刚刚略读了DOM编程艺术和蝴蝶书,有了一些感觉,打算上手试一试,谢谢你!
arachide   2015-02-22 13:34:32 +08:00 @billwsy
桌面(qml msjs) 移动(appcelerator msjs) 游戏(cocosdxjsb unityscript) 服务器(nodejs)嵌入(tessel)测试(appleuiautomation telerikjs)nosql mapreduce(mongodb couchdb)大数据算法hadoop mapreduce(ms的hdinsight javascript)

都是javascript
谁能更广泛?

呵呵 吼吼
RaymondYip   2015-02-23 20:09:20 +08:00 JavaScript权威指南
JavaScript语言精粹
多时间,多写代码才是王道
arachide   2015-02-24 15:22:04 +08:00   ♥ 1 javascript是偶目前见过的唯一一种 框架会对语言产生干扰的语言
这也能解释为何很多前端会jquery但写不好javascript

谨慎用框架 搞不好就蹉跎岁月浪费生命