V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
83f420984
V2EX  ›  程序员

目前在自学JavaScript,感觉非常的吃力,是不是我的方法不对?

  •  
  •   83f420984 · 2014-01-22 12:03:02 +08:00 · 23797 次点击
    这是一个创建于 3950 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我自己的学习方法是,看JavaScript DOM编程艺术,第一章节我研究了近3个星期,始终不明白它里面的讲的对象与数组与代码表示的意思,然后实现是看不下去了;

    转而去看妙味课堂Javascript视频教程,里面前5节就是JS学前预热课程,这5节课程重复看了10遍以上,不停地练习视频里的例子,自己已经可以写点简单的JS效果了;

    然后重新去看JavaScript DOM编程艺术,感觉很容易上手,没有刚刚开始看时的迷惑

    现在的问题是,我还是不明白什么是对象,什么是数组,什么是闭包,怎么隐藏全局变量,等
    第 1 条附言  ·  2014-01-22 13:40:24 +08:00
    看了几个老兄都在说要有目标的学习,这样才能学好,谢谢
    77 条回复    1970-01-01 08:00:00 +08:00
    66beta
        1
    66beta  
       2014-01-22 12:08:03 +08:00   ❤️ 1
    不如先学下python或者PHP吧,比较简单,好上手,成就感来得快
    话说,从初级向中级进步路上,我觉得JS比上面2者难得多
    chemzqm
        2
    chemzqm  
       2014-01-22 12:09:50 +08:00
    犀牛书 javascript the good part
    83f420984
        3
    83f420984  
    OP
       2014-01-22 12:12:12 +08:00   ❤️ 1
    @chemzqm 犀牛书比JavaScript DOM编程艺术更加难啃,我看了3页就放弃了,直接看JavaScript DOM编程艺术+视频
    srdrm
        4
    srdrm  
       2014-01-22 12:13:38 +08:00
    你要是编程零基础就别看什么编程艺术了,找个傻瓜书啥的
    turing
        5
    turing  
       2014-01-22 12:14:07 +08:00   ❤️ 1
    我觉得反复看蝴蝶书就好了。写代码主要在写。读书可以大略地读,快速看完,不懂也没有关系,看完之后根据自己仅有的知识和理解去写,一遍遍试错的过程中就能真正地理解编程语言了。
    serenader
        6
    serenader  
       2014-01-22 12:21:59 +08:00   ❤️ 4
    目前我也在学 JavaScript ,前期我也是先看 JavaScript DOM 编程艺术,在练习完里面的那个图片库案例之后我就开始看 JavaScript 高级程序设计了。

    JavaScript DOM 编程艺术相对来说还是比较好理解的吧?我个人觉得里面的例子我自己都可以理解。只不过 DOM 编程艺术里面并没有详细地教你 JavaScript 最基础的东西。我个人感觉只是纯粹在讲关于 DOM 这方面的内容。

    而 JavaScript的 基础知识个人认为在 JavaScript DOM 编程艺术里面学不到的。

    基础知识还是看JavaScript高级程序设计 或者JavaScript权威指南。学完整本书的内容应该能够掌握大部分知识了吧,我觉得。因为自己还在学习当中,不好下结论。

    另外上次有人在 V2EX 上发了个 如何正确学习 JavaScript 的链接, 我顺便贴上来吧。
    http://javascriptissexy.com/how-to-learn-javascript-properly/

    里面的内容是围绕 JavaScript 高级程序设计 和 JavaScript 权威指南写的,如果还没有这两本书最好去买本吧。

    共勉。


    @66beta 搭车请教一下, Python 和 PHP 真的比 JavaScript 简单吗?对于入门来说。我本来自己打算先学好 JavaScript 和基础的 HTML 和 CSS 再去系统学习 PHP 或者其他后端语言。如果说 Python 和 PHP 真的比较容易入门,那么有什么好方法入门呢?
    seiwev
        7
    seiwev  
       2014-01-22 12:23:14 +08:00
    你不明白说明你没有基础,先看一些基础的书吧。可以翻翻Code Complete里面讲数组、对象。
    83f420984
        8
    83f420984  
    OP
       2014-01-22 12:34:00 +08:00
    @serenader 老兄讲的非常符合我现在的情况,主要还是问题是基础差了,谢谢
    bakac
        9
    bakac  
       2014-01-22 12:34:56 +08:00
    要有目标(例如必须要在短期解决的问题)才会有动力, 然后边看边实践.
    thinkif
        10
    thinkif  
       2014-01-22 12:37:04 +08:00
    先找本书或者网络教程学习一下基础语法之类的

    看书的时候不容易理解也没关系, 看过去, 有了后面的知识回头再去研究前面不明白的地方就豁然开朗了
    kzy9007
        11
    kzy9007  
       2014-01-22 12:40:06 +08:00
    我也想学 买了一本书研究中~~
    FrankFang128
        12
    FrankFang128  
       2014-01-22 12:42:28 +08:00 via Android
    因为你没有了解过内存层面的东西,所以对数组没有具体的认识。
    但是,记住它的特点就好,用久了就知道了。
    lemonlwz
        13
    lemonlwz  
       2014-01-22 12:42:46 +08:00
    一本语言精萃足已
    FrankFang128
        14
    FrankFang128  
       2014-01-22 12:43:00 +08:00 via Android
    有一种学习方式叫Bug驱动学习
    guchengf
        15
    guchengf  
       2014-01-22 12:43:37 +08:00   ❤️ 1
    语言精粹用来自学不是什么好选择。。。
    FrankFang128
        16
    FrankFang128  
       2014-01-22 12:44:59 +08:00 via Android
    @lemonlwz 怎么可能足矣,人家没有其他语言基础,连数组是什么都没理解
    donwa
        17
    donwa  
       2014-01-22 12:46:18 +08:00 via iPhone
    先玩jquery吧。玩熟了再研究javascript。
    jquery很容易上手。
    sanddudu
        18
    sanddudu  
       2014-01-22 12:49:31 +08:00
    你学习的姿势不对
    luoyou1014
        19
    luoyou1014  
       2014-01-22 13:03:59 +08:00
    别听那些说要学别的语言的, 光装环境就烦死人.

    学习要有一个目标才能学好, 没有目标跟容易在原地踏步, 所以先给自己定个目标, 比如幻灯片等等

    至于对象, 闭包什么的, 那些都是概念, 不理解也不要紧, 会用即可, 用多了自然就会了.

    同样推荐从jquery入门, 你有了基础, 看jquery会更方便, 推荐过一遍w3school上面的教程.

    PS: 生活中喜欢学习的真难找啊, 网上到是有很多.....
    sunus
        20
    sunus  
       2014-01-22 13:09:25 +08:00
    别死看书(除非是要考试),想想有啥想做的小玩意,努力做出来。然后再回过头来看书。

    现在不是很多想 http://www.codecademy.com/ 这样在线学习的网站,可以看看
    edward1992
        21
    edward1992  
       2014-01-22 13:11:34 +08:00
    别怕,学Javascript是有用的,web现在呈现一个js大一统的趋势,学Javascript大方向上错不了。

    但是Javascript是一门设计很不完善的语言,很多琐碎的语法细节会让你花掉很多时间。

    建议还是结合到具体项目来学习。我说的项目不用很大,比如自己打个博客什么的就够了。
    tonitech
        22
    tonitech  
       2014-01-22 13:19:18 +08:00
    你以前学过其他的语言吗?
    learnshare
        23
    learnshare  
       2014-01-22 13:28:38 +08:00
    @donwa
    @luoyou1014
    我推荐先学 jQuery,比原生 API 容易上手。

    其实入门的第一步是 w3school(去操作一下里边的演示,然后随便修改、运行一下),然后是一本详细的书(比如 JS 权威指南 6),下一步是学习高级用法(面向对象、设计模式什么的),最后是应用(随时参考 MDN、webplatform 的文档)
    83f420984
        24
    83f420984  
    OP
       2014-01-22 13:33:54 +08:00
    @learnshare 没有学的其它的语言
    84840
        25
    84840  
       2014-01-22 13:40:48 +08:00
    TankyWoo
        26
    TankyWoo  
       2014-01-22 13:42:20 +08:00
    现在一般都是事件驱动式学习。
    83f420984
        27
    83f420984  
    OP
       2014-01-22 13:42:53 +08:00
    83f420984
        28
    83f420984  
    OP
       2014-01-22 13:43:41 +08:00
    @TankyWoo 事件驱动式学习是如何学习?
    TankyWoo
        29
    TankyWoo  
       2014-01-22 13:50:36 +08:00
    @83f420984 就是有需求、有任务,然后针对这个任务,去学习。

    也可以理解为“目标”
    84840
        30
    84840  
       2014-01-22 13:52:18 +08:00
    常用的算法Javascript版参考这里http://www.nowamagic.net/librarys/veda/detail/167
    ianva
        31
    ianva  
       2014-01-22 13:54:43 +08:00
    1. JavaScript DOM编程艺术 这本书最好的地方在于你不需要关心javascript是什么就能做出一些效果来,让新手有兴趣玩下去
    2. javascript 是一门语言,dom 不是javascript的一部分 dom 是 Document object model 就是浏览器提供的用来操作文档的一种办法,但它本身是低级或中级的api,也就说面向的应用方式相对底层,所以用起来很不方便,不同的浏览器实现也有差异,所以用一些dom 库会更好,如jquery,要分清楚什么是语言,什么是平台提供的api。
    3. 因为大部分时候javascript面对的平台是浏览器(node.js是另一个方向),所以可以通过实现一些浏览器上的小功能去学习,jquery是个易用的东西,他能帮助很容易你将学习到的javascript的语言特性呈现出来。
    4. 现在这个阶段了解原生的dom接口意义并不大,因为像jquery,mootools,yui这些库已经把dom能做到的99%的事情都实现了,能用更方便的接口为什么要用原生呢,用原生本身就是对项目的不负责,因为跨浏览器本身会遇到的问题比你想想的要多太多了,如果看过一些库源码相信可以了解到,不但会降低项目的稳定性,还会带来各种维护性问题。

    推荐的书目:
    1. javascript 权威指南(David Flanagan)
    2. JavaScript高级程序设计(Nicholas C. Zakas)
    3. javascript 语言精粹(Douglas Crockford)
    4. JavaScript设计模式(Addy Osmani)
    coolicer
        32
    coolicer  
       2014-01-22 13:54:49 +08:00
    成长是有个过程的。我当时也经常在问自己,虽然现在JS很久没写,感觉也差不多。懂了语法,剩下的只有算法要靠自己想了。
    84840
        33
    84840  
       2014-01-22 13:54:57 +08:00
    同意“就是有需求、有任务,然后针对这个任务,去学习。”
    @TankyWoo @83f420984

    这个方法比较好。

    在有Javascript基础的前提下,找一个具体的代码去读,去练习。
    我的VBSript就是这么学习的
    learnshare
        34
    learnshare  
       2014-01-22 13:57:38 +08:00
    @83f420984 JS 不太需要其他语言的基础就可以学习的
    Mutoo
        35
    Mutoo  
       2014-01-22 14:11:35 +08:00
    "现在的问题是,我还是不明白什么是对象,什么是数组,什么是闭包,怎么隐藏全局变量,等"

    这些程序概念的出现都是为了解决特定问题的,显然你没有遇到,或者还没正视这些问题。

    刚开始编程的时候,你肯定会用大量的变量,x y z x0 x1 x2 ... 越来越多,多到你都不知道要怎么给它们起名字,(除非你还在写很小的程序),数组就是为了帮你分组一些数据用的。

    somethings = [...]

    你再也不用去给里面的东西起名字了,而可以通过索引来引用它们 somethings[0] somethings[1] somethings[2] ...

    然后你会学到循环,连索引都不用自己打了,用循环变量来统领它们。

    for(i=0;i<len;i++) doSomething(somethings[i]);

    然后你会接触到越来越强大的指令,编程的过程就是循序渐进的。

    对象可以让你以更宏观的角度去解决问题。

    闭包可以让你区分或隐藏数据(不要问我为什么要隐藏)。

    不过我还是不理解你为什么会吃力……有人逼你一个星期要学完吗?
    83f420984
        36
    83f420984  
    OP
       2014-01-22 14:26:14 +08:00
    @Mutoo 讲的太好了,用很直白的语言说明了JS的对象,数组等起的作用;
    吃力是因为学一个知识点,需要很长时间的理解和不断的练习才明白它要作用和用法
    Mutoo
        37
    Mutoo  
       2014-01-22 14:31:08 +08:00   ❤️ 1
    @83f420984 多动手,多看书,耐心。一个概念没看懂,就换几本书看,不同的书会从不同的侧面来解释同样的事物。当你看懂了,再回过头就很容易了。

    “然后重新去看JavaScript DOM编程艺术,感觉很容易上手,没有刚刚开始看时的迷惑”

    这就是一个很好的开始。
    hkongm
        38
    hkongm  
       2014-01-22 14:53:30 +08:00
    JavaScript高级程序设计(Nicholas C. Zakas)
    itfanr
        39
    itfanr  
       2014-01-22 14:56:49 +08:00
    @turing 嗯 你是过来人 哈哈
    raincious
        40
    raincious  
       2014-01-22 14:58:40 +08:00
    @Mutoo

    >> 你再也不用去给里面的东西起名字了,而可以通过索引来引用它们 somethings[0] somethings[1] somethings[2] ...

    Bad practice.

    建议一定要节省变量或者有一定洁癖的话,用Object搞定。

    var setting = { url: '', type: '' };

    这样比 var url = '', type = '';简洁。

    但是不给变量起名字,相当于 var a=0, b=0, c=0;,很明显不符合规范。
    Mutoo
        41
    Mutoo  
       2014-01-22 15:09:23 +08:00
    @raincious

    风格习惯是一回事,但我想表达是这样的例子,我看过很多同学这样写程序(当然,是在他们还不懂数组的时候):

    var ball0 = new Ball();
    var ball1 = new Ball();
    var ball2 = new Ball();

    // loop
    ball0.update();
    ball1.update();
    ball2.update();
    ball0.render();
    ball1.render();
    ball2.render();
    ...

    而用数组就不再需要起这么蹩脚的名字了:

    var balls = [];
    for(var i=0;i<counts;i++) balls.push(new Ball());

    // loop
    for(var i=0;i<counts;i++) {balls[i].update(); balls[i].render()};
    raincious
        42
    raincious  
       2014-01-22 15:19:20 +08:00
    @Mutoo

    你上面的例子本身就需要用到数组,因为是大量建立同一类型的对象。为了后期对这些对象进行批量维护,也需要建立数组。

    但是 “你再也不用去给里面的东西起名字了,而可以通过索引来引用它们” 这句是不对的。因为在很多情况下,建立变量(好吧,其实你建立的数组也是一个变量的值)来储存数据并不适用你说的情况。比如要建立一个配置表,之类。

    代码是给人读的,保持易读性相当重要。
    flynngao
        43
    flynngao  
       2014-01-22 16:34:52 +08:00
    为何非常吃力……,我觉得js是超级蠢的语言了,弱类型而且很多情况不用考虑溢出……
    bzw875
        44
    bzw875  
       2014-01-22 16:39:03 +08:00
    @84840 我也是看完《javascript DOM 编程的艺术》后选择这本《JavaScript高级程序设计(第3版)》来看的。
    kran
        45
    kran  
       2014-01-22 17:03:15 +08:00
    不建议初学者学习js
    wity_lv
        46
    wity_lv  
       2014-01-22 17:06:22 +08:00   ❤️ 1
    @flynngao

    Javascript非常接近两门门非常优秀的语言(C + Lisp). 其实javascript也非常优秀。
    推荐看这两本书,很薄,很无压力:
    Javascript Good Part
    http://book.douban.com/subject/2994925/

    Functional Javascript
    http://book.douban.com/subject/22733640/

    踩坑踩怕了,看这个:
    http://bonsaiden.github.io/JavaScript-Garden/zh/

    @84840
    建议跟着这里的教程学一遍:
    http://www.codecademy.com/zh/dashboard

    书,推荐: turing的《Javascript 基础教程》

    《Javascript高级编程》,不推荐。如果没有大量的js实战做经验,这本书属于自虐。
    《Javascript权威指南》,不推荐,理由同上。此书的厚度等同于新华字典,通读纯属自虐。当工具书翻看非常合适。

    关于DOM方面,看书不合适,看“编程艺术”类的书更不推荐,没有大量经验,不踩大量坑,对此类书不会有什么共鸣,反而会对初学者造成很多束缚。
    学习DOM推荐w3cschool的文档,过一遍非常轻松.

    http://www.w3school.com.cn/htmldom/index.asp?utm_source=twitterfeed&utm_medium=twitter
    whatsupbitch
        47
    whatsupbitch  
       2014-01-22 17:15:32 +08:00
    javascript的dom操作很蛋疼 所以我觉得还是python php好 一边写网站一边练js
    mactaew
        48
    mactaew  
       2014-01-22 17:18:25 +08:00 via Android
    所以我个人觉得那个入门先学C的年代挺好的,我是从C入门的,后面的学习理解起其他需要来都还是很快的。
    MingZhe
        49
    MingZhe  
       2014-01-22 17:24:52 +08:00   ❤️ 1
    有关看技术类的书籍我来说一下吧,像楼主那么看,一章看几个星期,看不懂是正常的,不懂的东西,再盯着看也不一定懂。读书一定要快,迅速看完一本书,能记住多少就记住多少。离散的点多了,就串成线了。。。在没有认识自然数的时候,就想找到1~10中所有的点,是不太现实的。
    yyfearth
        50
    yyfearth  
       2014-01-22 17:33:59 +08:00
    @83f420984 不明白什么是对象,什么是数组,什么是闭包
    这个不是JS的问题,而是计算机编程基础,看来LZ没有计算机专业的背景啊,需要了解一些计算机编程的基础,任何一门语言C/C++/Java/C#入门比较推荐,另外就是基本的数据结构和算法
    如果LZ学过C啊,数据结构算法啊之类的,学学JS也还不错
    如果LZ真的是完全从零开始学编程,JS确实不是很推荐,对以后的学习可能会造成不好的影响
    而且你说的书基本上都对你来说太难了,因为你很多基础概念不熟悉,不知道所以然
    另外JS最麻烦的地方就是 DOM操作 面向对象编程 以及 闭包,这些东西至少要你比较了解基本的程序开发,数据结构和熟练使用简单的JS或者jQuery之类的类库之后再慢慢啃
    bombless
        51
    bombless  
       2014-01-22 19:59:32 +08:00
    先有别的语言的基础当然会学的快……所以个人感觉重点在于没有捷径……
    miniwade514
        52
    miniwade514  
       2014-01-22 20:15:12 +08:00
    我认为,没有编程基础的时候还不适合学 JavaScript,这门语言多少有点非主流,建议先通过 C 或者 C++ 来学习一下最基本的编程,把对象、数组、作用域这些东西理解了,再学 JavaScript。按这样的流程,你应该会觉得 JavaScript 这门语言本身很简单、很单纯,需要下功夫的地方是活用、善用。

    《JavaScript DOM 编程艺术》这本书是最早让我迷上 JavaScript 的书。把书上代码都敲下来,一个 Demo 就出来了,这 Demo 比其他语言在终端里面的 output 生动太多了,兴趣一下子就上来了。当然,这本书里涉及的知识还是比较窄的,系统学习还需要其他的书。
    January
        53
    January  
       2014-01-22 20:33:17 +08:00
    "是"
    zzNucker
        54
    zzNucker  
       2014-01-22 21:04:01 +08:00
    javascript哪里接近lisp了。。。
    83f420984
        55
    83f420984  
    OP
       2014-01-22 21:08:32 +08:00
    @bombless
    @miniwade514
    @yyfearth 谢谢提醒
    flynngao
        56
    flynngao  
       2014-01-22 21:31:40 +08:00
    @wity_lv 为何是@我…………
    jesse_luo
        57
    jesse_luo  
       2014-01-22 21:39:04 +08:00
    学js时花了几天写了个chrome插件,算是了解了语法

    我觉得些chrome插件不错,学习的时候可以把重心放在js语言上
    wity_lv
        58
    wity_lv  
       2014-01-22 22:12:48 +08:00
    @flynngao "我觉得js是超级蠢的语言了,弱类型而且很多情况不用考虑溢出……"
    我把"超级蠢"理解成“烂”。
    我一直很喜欢javascript这门语言,希望能推广一下javascript好的部分,减少对js误解。

    P.S:
    "弱类型而且很多情况不用考虑溢出……" 求详解.
    dorentus
        59
    dorentus  
       2014-01-22 23:06:13 +08:00 via iPad
    Geeker
        60
    Geeker  
       2014-01-22 23:06:41 +08:00
    必然是项目驱动学习更好啊,最近实习要做网页,看了看就得上手了,用到不会的立马google,然后现学现用,学起来很快的。不要想把细节问题搞清楚,有些坑说不定一辈子也碰不到,所以先掌握核心,遇到了自然再搜
    xcatliu
        61
    xcatliu  
       2014-01-22 23:19:46 +08:00
    如果致力向前端发展,这儿有个前端知识结构,明确大的行进方向
    https://github.com/JacksonTian/fks
    giumo
        62
    giumo  
       2014-01-22 23:31:01 +08:00
    寒假刚开始在Codecademy上面学Javascript现在学到对象 觉得挺好上手的 在学校有C++的基础什么觉得相比之下简单了很多http://www.codecademy.com/
    coetzee
        63
    coetzee  
       2014-01-23 08:16:08 +08:00
    @MingZhe 哥们儿,我觉得你说的很有道理,我就一直这么做的
    j
        64
    j  
       2014-01-23 09:44:33 +08:00
    找个让自己开心的学习途径,我跳跃度高,你看不懂的话自行补充:

    1 做码农最需要的是要会“拼.字.符.串”,跟什么计算机基础关系不大,好好练习object,string,array,正则(一点点)就可以了(此时此刻别碰jq)
    2 然后遇到前端的实战了,需要搞dom,打开jq源代码,认真了解jq关于dom处理的每个方法怎么写的,为啥这么写。
    3 其他的诸如ajax什么的参见上一条

    帮你减轻负担:

    *市面上大部分的书都是参考资料不是实战指导,用不着天天抱着个参考资料死磕,除非你已经有其他语言的底子,多参与实战吧,github上有“todo项目” https://github.com/tastejs/todomvc ,自己独立做一次,你肯定就入门了。

    *别对框架太认真,包括jq在内都不是必须的,他们只不过是学习资料而已。
    jiyinyiyong
        65
    jiyinyiyong  
       2014-01-23 09:45:27 +08:00
    看看 CoffeeScript? http://read.douban.com/ebook/198648/
    JS 本身不是严谨的语言, 语法比较杂, 用 CoffeeScript 这个子集会好一点,
    结合任务做做具体的例子会比较好, 不要急着去理解 JS 具体的意思.
    难道没有人和楼主说过 JS 其实是个大坑么?
    j
        66
    j  
       2014-01-23 09:50:08 +08:00
    @jiyinyiyong 比起php什么的,js简直就是跳板了。
    vivianalive
        67
    vivianalive  
       2014-01-23 10:08:56 +08:00
    有一个建议是,在学javascrip的时候,千万千万不要碰jQuery...
    Moods
        68
    Moods  
       2014-01-23 10:12:24 +08:00
    各种库用多了,开始确实比较想不通,也没必要一定跟着某些书的思路走。
    83f420984
        69
    83f420984  
    OP
       2014-01-23 11:28:12 +08:00
    @vivianalive 我师傅也跟我说过这样的话,所以目前的学习方法只学原生,jQuery暂时不碰它
    jinwyp
        70
    jinwyp  
       2014-01-23 11:39:24 +08:00
    请直接学angular, javascript 本身由于10天设计出来的语言,问题很多. 建议从框架入手.
    而且现在是2014年了, 请直接从angular开始学. 或者是ember, 等. 然后在去学习什么DOM操作什么的
    westup
        71
    westup  
       2014-01-23 11:46:38 +08:00
    和楼主一样,第一本js书是这本JavaScript DOM编程艺术,后来发现看错书了,里面基础知识讲得太少,《JavaScript高级程序设计》必须要买,但是这本书也有缺点,提到太多其他语言(java)了,java也不懂肿么办,只有慢慢啃了,我相信,花多点时间,一定有所成。
    83f420984
        72
    83f420984  
    OP
       2014-01-23 13:29:30 +08:00
    @westup
    @jinwyp 谢谢
    flynngao
        73
    flynngao  
       2014-01-23 14:49:12 +08:00
    @wity_lv 我说js是很蠢的语言是指,相对于其他传统高级语言,C,C++,java,js的限制非常的少,数据结构之间的转换非常简单,而且基本不用考虑语法和算法问题,弱类型也是这个意思
    vellow
        74
    vellow  
       2014-01-23 16:41:08 +08:00
    分享一下全无编程基础学JS的过程,
    第1个月,看一套入门视频,对HTML,CSS,JS有个初步概念,练习
    第2,3月,犀牛书(很无聊),W3School,中间断断续续,看见什么好玩就玩什么,HighCharts,bootstrap,jQuery,用框架可以很快做出炫酷的东西来,成就感会让人继续学下去。
    第4月,正好选了个相关的毕业设计题目,做一个完整的静态网站。
    ...
    后来,研究JavaScript高级程序设计,编写高质量代码,高性能JavaScript,JavaScript设计模式这几本
    ------
    总结一下学JS要循序渐进,每个阶段要看适合该阶段的书,理解是基于实践经验的
    wity_lv
        75
    wity_lv  
       2014-01-23 21:48:19 +08:00
    @flynngao 强类型/弱类型, 编译型/脚本型,各有优势没什么好讨论的,看个人喜好。
    关于算法,主要使用js的场景很少会考虑的算法问题。javascript支持high-order function,做算法也非常优秀。
    一个“平均阻尼”法的算法,找函数的不动点。
    Lisp实现:
    https://github.com/lvjian700/sicp/blob/master/chapter-1/1.33_fixed-point.lisp

    (define tolerance 0.00001)

    (define (fixed-point f first-guess)
    (define (close-enough? v1 v2)
    (< (abs (- v1 v2)) tolerance))
    (define (try guess)
    (newline)
    (display guess)
    (let ((next (f guess)))
    (if (close-enough? guess next)
    next
    (try next))))
    (try first-guess))

    Javascript实现:
    https://github.com/lvjian700/sicp/blob/master/chapter-1/fixed_point.js

    var toerance = 0.000001;

    function fixed_point (f, first_guess) {
    function close_enough (v1, v2) {
    var delta = Math.abs(v1 - v2);
    return delta < toerance;
    }

    function tryit (guess) {
    console.log(guess);
    var next = f(guess);

    if (close_enough(guess, next)) {
    return next;
    }

    tryit(next);
    }

    return tryit(first_guess);
    }


    用它算一下 x^x = 1000 的一个根。
    fixed_point(function(x) {
    return Math.log(1000)/Math.log(x)
    }, 3.0);
    83f420984
        76
    83f420984  
    OP
       2014-01-23 21:51:54 +08:00
    @vellow
    flynngao
        77
    flynngao  
       2014-01-23 22:46:59 +08:00
    @wity_lv 为你认真态度点个赞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1077 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 22:52 · PVG 06:52 · LAX 14:52 · JFK 17:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.