想学习 Javascript,有什么经验和坑吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
asd103
V2EX    Javascript

想学习 Javascript,有什么经验和坑吗?

  •  
  •   asd103 2017-01-06 23:35:03 +08:00 5956 次点击
    这是一个创建于 3209 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Python 学了快两年,想学学 Javascript ,不知道大家有没有什么坑和经验可以指教指教~

    45 条回复    2017-01-22 01:05:31 +08:00
    dantegg
        1
    dantegg  
       2017-01-06 23:37:43 +08:00   1
    t/310767?p=1
    参考此贴
    bzw875
        2
    bzw875  
       2017-01-06 23:48:49 +08:00
    不带这么吓人的,看完《 Javascript 高级程序设计》吧
    murmur
        3
    murmur  
       2017-01-06 23:51:50 +08:00
    整个前端都是个大坑 你学了 1 年明年全给你推翻了
    liuchao1986105
        4
    liuchao1986105  
       2017-01-07 00:11:59 +08:00
    http://www.lambda-study.com/topics/583159699c514011425c842b 整理的一些 js 的视频教程和书籍,看是否对你有用
    sensui7
        5
    sensui7  
       2017-01-07 00:18:45 +08:00
    你先决定是否写分号,
    misaka19000
        6
    misaka19000  
       2017-01-07 00:25:53 +08:00
    @sensui7 必须不带分号 XD
    nfroot
        7
    nfroot  
       2017-01-07 00:56:11 +08:00
    @sensui7
    @misaka19000
    早期写 asp 不准写分号
    后来写 php 必须写分号
    后来写 js 随便你写不写:)
    asd103
        8
    asd103  
    OP
       2017-01-07 01:05:56 +08:00
    不写分号!
    zsx
        9
    zsx  
       2017-01-07 01:26:40 +08:00
    @nfroot 其实 ASP 用 JScript 也是随便写不写的……
    nfroot
        10
    nfroot  
       2017-01-07 01:52:02 +08:00
    @zsx 写 js 还是用 node.js 吧 虽然那时候没有…… ASP 默认当然是 VBS 了……但是那时候也有懂 JS 的直接用 JScript ,不过也有可能不少优势(没学过) 最显而易见的问题就是时区…… 真是羡慕嫉妒恨啊。
    scnace
        11
    scnace  
       2017-01-07 02:30:10 +08:00 via Android
    之前听我司某前端说 js 要写分号 不然压缩的时候会出现乱七八槽 不可预知的错误诶… (Gopher 表示写 Js 的时候经常还是会忘 233 ) 最近在看 vue 结合着 gopher-vue 看感觉倒好理解了 233
    ericls
        12
    ericls  
       2017-01-07 05:52:36 +08:00
    楼上那些说分号问题的。。。。

    你们项目不包含 .eslintrc 之类的文件吗
    kimown
        13
    kimown  
       2017-01-07 06:15:38 +08:00 via Android
    统一 airbnb eslint 或 standard 规范
    srlp
        14
    srlp  
       2017-01-07 07:36:35 +08:00 via iPhone   3
    就 js 这门语言本身,看 mozilla 的介绍就够了。

    https://developer.mozilla.org/en-US/docs/Web/Javascript/A_re-introduction_to_Javascript

    https://developer.mozilla.org/en-US/docs/Web/Javascript/Guide

    学的过程你也许会有类似 python 的即时感,没错它们的新版特性应该有互相借鉴。上述过程坑的,是 js 的一些黑暗属性,那是类似 c++ 坑的历史遗留问题,尽量按照最佳规范避开或者写最新标准的代码就好了。

    坑无穷多的其实是前端开发。学会 js 本身没啥用,主流的用途当然是配合前端开发。当然了纯后端 nodejs 环境也不是不可以,那就成了和 py web 开发没啥区别了。

    接下来学的前端开发路径可以是:知道 nodejs 和浏览器 js 的差别和应用场景,了解前端的各种概念比如说 dom 和 ajax 和 promise 等(其实就是各种 api 和设计模式),然后就是搭建前端开发全家桶比如说 node+babel+webpack (一堆很复杂的东西,类似 c++ 环境的编译器 makefile 等等,没错写最新版 js 需要编译器把它编译成旧版的),然后是选择一些前端框架来学比如说 react vue angular (强烈不推荐 angular 作为入门, react vue 的上手曲线比较平缓)。

    既然前端开发,陆陆续续肯定会顺手把 html css 学了。 css 也是一个大坑,只兼容新浏览器的话可以考虑全用 flexbox 实行布局。不想纠结这方面的话请用 bootstrap 框架。

    个人吐槽一下,前端开发与其说繁荣不如说混乱。现在像是三国混战,也许过几年就好了。入坑需谨慎啊。
    ()
    chemzqm
        15
    chemzqm  
       2017-01-07 07:39:42 +08:00
    beidouxun
        16
    beidouxun  
       2017-01-07 08:54:42 +08:00 via Android
    你让我写。我会个皮毛。你让我改!我连自己都不相信我竟然会那么多!
    ruolis
        17
    ruolis  
       2017-01-07 09:27:38 +08:00
    我还是习惯写分号的
    k9982874
        18
    k9982874  
       2017-01-07 09:39:51 +08:00 via iPhone
    先只精通 js 和 css ,其他什么 typesctipt coffee less sass 什么的都别管
    finely
        19
    finely  
       2017-01-07 09:48:15 +08:00 via Android
    别上来就学框架,不然你会哭的。前端框架和工具一年一变,先打好坚实的基础,再用框架。
    asd103
        20
    asd103  
    OP
       2017-01-07 09:50:07 +08:00
    @k9982874 你说什么?后面的名词都没听过 /笑 cry

    @finely 我连基础都不会~
    heraldboy
        21
    heraldboy  
       2017-01-07 10:06:08 +08:00
    你不像已经学过几年语言的程序员,重要的是开始用,不要把学语言当成备单词。
    asd103
        22
    asd103  
    OP
       2017-01-07 10:10:32 +08:00 via Android
    @heraldboy 我本来就不是程序猿
    itkdqwzero
        23
    itkdqwzero  
       2017-01-07 10:53:15 +08:00   1
    前端:
    语言基础打好就可以学框架了, jQuery 不算什么框架, 不过是高兼容性的类库. 原生的 querySelector 及 DOM 操作要会点
    基础方面, 你要知道字符串, 数组, 及数字的各种操作, 要知道什么情况下,reduce 的速度比其它遍历方式快.
    instance 继承判断与原型链要会, 难的是读别人的插件, 更难的是做插件.
    js 的设计模式可以看看
    itkdqwzero
        24
    itkdqwzero  
       2017-01-07 10:58:16 +08:00
    遇到 coffeeScript 编译出来的的真是无语, 很多东西用各种技术进行编译,打包, 有时 github 上的插件要求打包环境. 单单安装环境就烦死你
    jianzhiyao020
        25
    jianzhiyao020  
       2017-01-07 11:20:42 +08:00
    fzhw88
        26
    fzhw88  
       2017-01-07 11:32:59 +08:00
    js 还是挺好学的,框架那是另一回事。
    maysixteenth
        28
    maysixteenth  
       2017-01-07 11:59:04 +08:00
    https://segmentfault.com/a/1190000004652898?_ea=680358
    之前在 sf 上看到的,相互学习
    xwartz
        29
    xwartz  
       2017-01-07 12:08:20 +08:00 via iPhone
    @fzhw88 不见得写分号是好习惯啊…
    fzhw88
        30
    fzhw88  
       2017-01-07 12:29:47 +08:00
    @xwartz 额,那还真不知道有啥坏处,请教一下?
    GreatMartial
        31
    GreatMartial  
       2017-01-07 12:44:03 +08:00 via Android
    你不是玩 Python 吗?为啥又要学前端...
    感觉还不如找门主力语言再往下深入学。
    Python 现在好玩的东西很多,比如深度学习
    xwartz
        32
    xwartz  
       2017-01-07 12:46:31 +08:00 via iPhone
    @fzhw88 知乎上有讨论该不该写分号, https://www.zhihu.com/question/20298345/answer/14670020
    fzhw88
        33
    fzhw88  
       2017-01-07 13:42:35 +08:00
    @xwartz 看了一下,这个还是假设: 1 ,人会忘记写分号, 2 ,人会不遵守 js 的规则在每个语句后都写分号,但是如果一开始就养成了好习惯,我觉得完全不存在这些问题。我只能说正确的写分号在多数情况下都有利于代码的理解,当然分行也基本能做到这一定,代码压缩借助好的工具肯定也能解决,说到底还是看个人习惯吧。 js 有明确的规则什么时候能省略分号,什么时候不能,只要遵循规则就行,非要说我都不写分号,全靠工具来加,我觉得这实际上是不理解基本的语句规则,那哪天没有工具,只是需要在控制台测试一段代码,都不知道哪些分号不能省那不是只能抓瞎了……
    fzhw88
        34
    fzhw88  
       2017-01-07 13:44:56 +08:00
    总结一下就是 js 的分号本来就是可选的,而且有明确的规则,至于你写不写,本来就是你的自由,只要别搞错了就行,而且个人认为这个规则算是很简单的了。
    Swift3030
        35
    Swift3030  
       2017-01-07 13:56:07 +08:00
    自己作死,学什么 JS
    lnkn
        36
    lnkn  
       2017-01-07 13:56:18 +08:00
    看标题的时候我第一想法是:
    想去学学 Python 吧,看了贴才知道...
    viosey
        37
    viosey  
       2017-01-07 14:01:04 +08:00
    根据框架再决定写不写分号咯,比如 vuejs 我就不写
    an168bang521
        38
    an168bang521  
       2017-01-07 14:55:05 +08:00
    先学原生 JS ,在学 jQuery ,然后再框架;这样不会被坑;
    如果上来就学框架,会发现所有框架都会坑你!
    dreamingincode
        39
    dreamingincode  
       2017-01-07 15:24:56 +08:00
    1. 别用 == 用 ===
    2. 别用 for...in 用 for...of
    3. "use strict";
    heraldboy
        40
    heraldboy  
       2017-01-07 16:15:29 +08:00
    @tumbzzc 我也不是,但这多年没少写了,工作需要,所以给你的建议就是一定要用起来,不用考虑那么多,现在是坑,可能以后就不是了,对别人是经验到你这可能是呵呵。
    Maxbee
        41
    Maxbee  
       2017-01-07 16:19:21 +08:00 via iPhone
    @dantegg 吓尿了
    mazyi
        42
    div class="sep3"> mazyi  
    PRO
       2017-01-07 22:15:39 +08:00
    把 js 看成一门语言,不要看成前端。
    mingyun
        43
    mingyun  
       2017-01-07 23:31:08 +08:00
    js 学好不容易,现在更新太快了
    aleen42
        44
    aleen42  
       2017-01-08 11:35:22 +08:00 via Android   1
    我得最好是打好基,犀牛看到高性能 Javascript ,以及及其部分算法。切不要浮
    poke707
        45
    poke707  
       2017-01-22 01:05:31 +08:00 via Android
    请问今时今日要打语言基础的话,看 <You Dont Know Javascript >会不会比犀牛书更好呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     952 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:38 PVG 04:38 LAX 13:38 JFK 16:38
    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