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 · 11635 次点击
    这是一个创建于 3572 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先给兄弟姐妹们拜个年,祝大家羊年快乐!

    最近想要换工作,跟老板聊的时候老板问起会不会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
        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。
    arachide
        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   ·   实用小工具   ·   2653 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 09:55 · PVG 17:55 · LAX 01:55 · JFK 04:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.