Javascript 要如何入门 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
billwsy
V2EX    Javascript

Javascript 要如何入门

  •  3
     
  •   billwsy 2015-02-20 13:43:59 +08:00 12115 次点击
    这是一个创建于 3903 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先给兄弟姐妹们拜个年,祝大家羊年快乐!

    最近想要换工作,跟老板聊的时候老板问起会不会Javascript,所以最近在计划着有空学一学Javascript。各位能不能介绍一下当时是如何入门的,读了一些什么书做了什么练习呢?
    60 条回复    2015-02-24 15:22:04 +08:00
    vzch
        1
    vzch  
       2015-02-20 13:44:55 +08:00   1
    就一条,善用搜索
    billwsy
        2
    billwsy  
    OP
       2015-02-20 13:46:59 +08:00
    @vzch 之前也一直试着用搜索来学习新知识,但是对于一个全新的话题要怎么比较全面的入门呢?能不能分享一下经验?
    marcfizzy
        4
    marcfizzy  
       2015-02-20 13:54:40 +08:00   1
    http://referrals.trhou.se/jamiefang
    英语好的话可以看。14天免费。
    wfifi
      &nbp; 5
    wfifi  
       2015-02-20 14:12:35 +08:00 via Android   1
    弄本靠谱的书系统学下
    billwsy
        6
    billwsy  
    OP
       2015-02-20 14:16:07 +08:00 via iPhone
    @wfifi 我也是这么想的,从上面的链接里得到了不少资源,不知道您有什么建议吗?
    lxrmido
        7
    lxrmido  
       2015-02-20 14:18:44 +08:00   3
    把逼格降下来……
    看w3school
    vzch
        9
    vzch  
       2015-02-20 14:29:38 +08:00
    好吧,说点实际的。学 Javascript 我走过不少弯路,就看书来说,由于前端更新的很快,旧的没必要看了, Javascript 高级程序设计比犀牛适合入门,然后蝴蝶犀牛,其他的有精力再看吧,写东西。漏了一个去年在用的好资源 https://docs.webplatform.org/wiki/Main_Page
    W3school 因为之前有不少错误,所以喷的人较多,这两年改了多少不确定,反正国内那个和国外的 w3school 都不算权威资料
    jianghu52
        10
    jianghu52  
       2015-02-20 14:57:55 +08:00   1
    弱弱的问一句,啥叫会。最简单的调onclick方法也是js。复杂的angularjs也是js。
        11
    arachide  
       2015-02-20 15:04:58 +08:00   1
    Javascript不等于jquery 也不等于前端

    单独学最好
    akfish
        12
    akfish  
       2015-02-20 15:39:42 +08:00   1
    直接撸项目是最好的学习途径。
    语言本身没什么好学的,当然除非这是你第一门语言。
    billwsy
        13
    billwsy  
    OP
       2015-02-20 15:50:05 +08:00
    @vzch 您给的链接非常适合初学者入门,谢谢!
    sadaharu09
        14
    sadaharu09  
       2015-02-20 15:50:35 +08:00 via iPhone   1
    billwsy
        15
    billwsy  
    OP
       2015-02-20 15:51:19 +08:00
    @akfish 谢谢,我有一点C++/Python的基础。我想换了工作之后马上就有机会接触真的项目啦。
    arachide
        16
    arachide  
       2015-02-20 16:23:22 +08:00   1
    @billwsy 纯算法代码 javscript和c++几乎无需更改
    billwsy
        17
    billwsy  
    OP
       2015-02-20 16:28:14 +08:00
    @arachide 恩,我想我主要需要学习一下DOM等Web开发的基本概念。
    scarlex
        18
    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
        19
    arachide  
       2015-02-20 16:45:48 +08:00
    @billwsy dom htl/css简单使用范围有限
    Javascript可以上天入地下海 无所不能
    haozhang
        20
    haozhang  
       2015-02-20 17:21:40 +08:00 via iPhone   2
    Javascript dom编程艺术
    Javascript 高级程序设计
    Javascript good parts (蝴蝶书)
    Javascript web富应用开发(猫头鹰书)

    从上倒下依次刷
    tonghuashuai
        21
    tonghuashuai  
       2015-02-20 17:37:58 +08:00
    一边学一边用
    FrankFang128
        22
    FrankFang128  
       2015-02-20 17:38:12 +08:00 via Android
    阮一峰
    jacob
        23
    jacob  
       2015-02-20 17:54:19 +08:00 via iPhone
    Javascript是最简单的语言,不是语言多简单,是资料实在太丰富了,随便一个特性,网上的资料都一堆。所以说是最好学的。
    learnshare
        24
    learnshare  
       2015-02-20 18:03:08 +08:00   1
    stonestyle
        25
    stonestyle  
       2015-02-20 19:39:12 +08:00   3
    hanan321
        26
    hanan321  
       2015-02-20 20:59:42 +08:00
    @haozhang 我就是按照20L说的这么刷的。
    blacktulip
        27
    blacktulip  
       2015-02-20 21:46:59 +08:00 via iPhone
    先整明白正则…… 我觉得最难搞就是这个
    liubiantao
        29
    liubiantao  
       2015-02-20 22:45:45 +08:00
    @blacktulip 整明白这个也入不了门啊, 毕竟楼主需要的是入门
    ryuutanyou
        30
    ryuutanyou  
       2015-02-20 23:02:27 +08:00
    感觉每隔一段时间都会有这个问题,已经被问烂了,知乎上一搜一大把。
    railgun
        31
    railgun  
       2015-02-21 02:26:52 +08:00
    我是从http://www.w3school.com.cn/ 上入门的,然后用chrome的控制台多试验几次,基本上就能搞懂了。再自己弄个项目练练手。自我感觉现在是刚入门的状态吧。
    然后有几个概念比较难理解,闭包和promise。闭包现在基本上弄懂了,promise刚接触,还没弄明白。
    jokcy
        32
    jokcy  
       2015-02-21 10:15:40 +08:00 via Android
    @akfish 不能这么说,需要本身的掌握对将来的学习决定有好处的。至少要理解js的类,继承,闭包,自己一些将来的比如promise什么的,不然后面学习会有坑
    sammo
        33
    sammo  
       2015-02-21 11:02:34 +08:00
    elegzg
        34
    elegzg  
       2015-02-21 11:12:16 +08:00
    @arachide 你看哪本书学习的?
    sammo
        35
    sammo  
       2015-02-21 11:12:25 +08:00
    知识面要广。
    elegzg
        36
    elegzg  
       2015-02-21 11:13:46 +08:00
    感觉JS比Java还难,楼主最好别碰,会被坑死
    sammo
        37
    sammo  
       2015-02-21 11:28:21 +08:00
    对于如何选择材料,推荐 walkthrough + cookbook 之类的东西,上手快


    这篇文章也可能能启发一下您的总体学习思路 ( 不单单对于 js 这门语言 ) ,千万不要低估自己的学习能力。
    http://blog.eqoe.cn/posts/faq.html
    lijsh
        38
    lijsh  
       2015-02-21 11:47:14 +08:00
    http://www.douban.com/doulist/1312467/这个豆列是我整理的JS的经典书单,说明一下:

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

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

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

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

    有一点OOP基础,什么都好办~~~
    sneezry
        50
    sneezry  
       2015-02-21 14:16:35 +08:00 via iPhone
    我是在w3school入门的,虽然讲解不深,但简单明了的例子和亲自参与实践,绝对比一本厚重的书有吸引力。入门了再看书补习啦。
    vzch
        51
    vzch  
       2015-02-21 14:20:48 +08:00
    有没有 OOP 你都要踩坑,传统的 OOP(如Java) 基于类的继承,JS 基于原型继承。而且 JS 的函数用法要比 C、Java 灵活,这也是坑的来源之一,刚开始觉得各种诡异风格那真是恶心
    akfish
        52
    akfish  
       2015-02-21 14:58:41 +08:00
    @jokcy 所以我说“除非这是第一门语言”嘛。
    而且学习方法也并不是非此即彼的,lz可以根据自己情况决定预备知识要学到个什么程度再开始撸代码。
    一般有点基础的,都没太大的必要把教材全啃完再动手。
    lxrmido
        53
    lxrmido  
       2015-02-21 15:00:58 +08:00
    在说JS之前……
    也许可以先看看这个CSS
    jokcy
        54
    jokcy  
       2015-02-21 15:32:06 +08:00 via Android
    @akfish 恩,其实第一门语言或者换个说法,编程基础还是非常重要的。有这个基础后面学习其他技术速度那是飞起来的
    StrayBugs
        55
    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
        56
    billwsy  
    OP
       2015-02-22 13:14:12 +08:00 via iPad
    @arachide 能解释一下为什么js无所不能吗?是因为node.js有很强大的能力吗?
    billwsy
        57
    billwsy  
    OP
       2015-02-22 13:16:00 +08:00 via iPad
    @haozhang 谢谢,我刚刚略读了DOM编程艺术和蝴蝶书,有了一些感觉,打算上手试一试,谢谢你!
    arachide
        58
    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
        59
    RaymondYip  
       2015-02-23 20:09:20 +08:00
    Javascript权威指南
    Javascript语言精粹
    多时间,多写代码才是王道
    arachide
        60
    arachide  
       2015-02-24 15:22:04 +08:00   1
    Javascript是偶目前见过的唯一一种 框架会对语言产生干扰的语言
    这也能解释为何很多前端会jquery但写不好Javascript

    谨慎用框架 搞不好就蹉跎岁月浪费生命
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2853 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 13:53 PVG 21:53 LAX 06:53 JFK 09:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86