1)我为什么要学习JavaScript?

在我立志说要当一名前端开发工程师之后,我做的第一件事情,就是上知乎。去搜“前端开发工程师”这几个字。然后就会发现很多答案中涉及到,一名前端工程师,必须要会的是html+css+javascript。在【怎样长成一个优秀的web前端开发工程师?】这个问题下,有人转了一篇外文博客的译版来回答,其中一段很表述得简单明了,“首先,前端工程师必须掌握HTML、CSS和JavaScript。只懂其中一个或两个还不行,你必须对这三门语言都很熟悉。也不是必须对这三门语言都非常精通,但你至少要能够运用它们完成大多数任务,而且无需频繁地寻求别人的帮助”(Nicholoas C.Zakas 《What makes a good front end engineer?》)。

于是在我把HTML和CSS学习到一定程度,也就是达到“能运用它们完成大多数任务”之后,我决定开始学习JavaScript。因为我意识到,虽然一开始能够用HTML和CSS来编写一个看上去挺不错的静态网页已经让我很有成就感,但是,仅仅只有结构和表现的网页,是远远不够的。javascript负责了web的其中一个层次:行为层。JavaScript在现代网页中所发挥的巨大作用,我就不去谈了,推荐阮一峰老师的js教程,其中一篇很清晰地向我们展示学习JS的重要性http://javascript.ruanyifeng.com/introduction/why.html

2)如果要学习JavaScript,我会怎样开始?

W3school是个很神奇的网站,“你可以找到你所需要的所有的网站建设教程”,我所有的web基础技术几乎都是从这里开始的(也有网易云课堂上面学习的网课)。它的教学模式会给你一种完全可以速成的错觉,对的,的确是错觉。例如当你把关于CSS的教程看完一遍之后,如果你的学习能力很强,你会比较系统地学习到关于CSS基础教程,但是如果仅仅是通过它就想立马做出一个很像样的网页,恐怕是有些难度的。但是我还是非常建议从W3school去开始,你可以从这里每一个浅显易懂的句子、demo中获得学习的自信,获得对一门语言最基础准确的了解。

当浏览过一遍W3school的教程之后,可以尝试去买一两本书来细看,我现在手上有《JavaScript权威指南》和《疯狂HTML5/CSS3/JavaScript讲义》。前面的那本是业内公认的犀牛书,后面那本或许就是速成书了吧(大一时候随意买的)。我认为直接去看一本很厚的权威书的时候,很容易让初入门的学习者丧失信心。所以我的建议还是先从速成书开始看,看到需要深入了解的内容时候,一本权威指南就很有必要了。不过,很多学习能力、理解能力比较好的人,是可以直接去把一本权威指南看通透的,只是对于目前的我而言难度就有些大了。 前天电话面试淘宝前端实习的时候,电话的最后面试官给了我一些建议,其中一点就是建议我认真把犀牛书看透,不仅仅是把书翻一遍,而是扎扎实实去理解书上的每一个知识点,即使目前还没能在具体的项目中用到,也要先去理解和弄通它。

一开始就直接用原生的JS去做项目其实是挺费劲的,尝试去学习jQuery,这是JS的一个库,它极大地简化了JS的编程,用它去开始做一些有意思的小案例是令人非常有成就感的。当能你够用jquery去写出一些看起来挺不错的效果的时候,我认为,也就掌握了如何去学习更后面知识的技能了。

如果回到大二暑假的时候,我是会这样去开始我的JS学习的,但当时的自己并没有那么强烈地意识到学习原生的JS是那么重要,而只是学习了JS的一些基本语法,就迫不及待投入到jquery的学习中,然后又很快就用jQuery写一些看起来还不错的图片轮播,便忽略了对最基础的js的学习,当时的我,连最基本的闭包和原型链都不知道。当我顿悟之后,我便从一个什么都不会的状态开始学习,尽管走了一大段弯路,不过最终还是拐回来了。

对于前端开发工程师而言,扎实的js基础是绝对不可以省去的。作为一个才接触前端不到一年的小渣,我依旧在努力摸索着通往前端的路。望一切真心付出的努力都不会白费。

谈谈我的js学习过程(一)的更多相关文章

  1. 谈谈我的js学习过程(二)——“Hello World!”

    在<谈谈我的js学习过程(一)>中,我简单聊了一下我认为的javascript的学习方法,接下来我们可以尝试来写一个最简单的js代码. "Hello World!"对于 ...

  2. Vue.js学习过程

    打开各大论坛,看到好多Vue.js的话题,可以说现在是非常火的框架,看到一个人这样评论Vue:“Vue.js兼容angular.js和 react.js的优点,并剔除他们的缺点.”因为现在公司不用Vu ...

  3. 谈谈我对 js原型链的理解

    想要学习 “原型链” 必须要认识什么是 “原型” 和 “原型链” 先理解一下普通的继承和原型的区别,下面写一段js代码来帮助理解: var Animal = function(){ // 动物抽象类 ...

  4. JS学习过程中碰到的小问题

    使用循环语句查找通讯录 //Setup var contacts = [ { "firstName": "Akira", "lastName" ...

  5. JS 正则表达式否定匹配(正向前瞻)

    引言:JS 正则表达式是 JS 学习过程中的一大难点,繁杂的匹配模式足以让人头大,不过其复杂性和其学习难度也赋予了它强大的功能.文章从 JS 正则表达式的正向前瞻说起,实现否定匹配的案例.本文适合有一 ...

  6. Html5+js测试题(开发版)

    ------------------------------------------------ 1. 谈谈你对js闭包的理解: 使用闭包主要是为了设计私有的方法和变量.闭包的优点是可以避免全局变量的 ...

  7. Node.js学习(第一章:Node.js安装和模块化理解)

    Node.js安装和简单使用 安装方法 简单的安装方式是直接官网下载,然后本地安装即可.官网地址:nodejs.org Windows系统下,选择和系统版本匹配的.msi后缀的安装文件.Mac OS ...

  8. Node.js学习(第一章:Node.js简介)

    Node.js是什么? Node.js 诞生于 2009 年,由 Joyent 的员工 Ryan Dahl 开发而成, 目前官网最新版本已经更新到 12.0.0版本,最新稳定的是10.15.3.Nod ...

  9. 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    写在前面 参考答案及资源在看云平台发布,如果大家想领取资源以及查看答案,可直接前去购买.一次购买永久可看,文档长期更新!有什么意见与建议欢迎您及时联系作者或留言回复! 文档描述 本文是关注微信小程序的 ...

随机推荐

  1. FineReport软件

    # FineReport常见问题与解答 ### FineReport是什么?FineReport,企业级web报表工具,中国报表软件知名品牌.借助于FineReport的无码理念,用户可以轻松的构建出 ...

  2. vscode 代码跳转之PHP篇

    1.安装插件:PHP IntelliSense 2.配置:"php.executablePath": "C:\\php\\php.exe", 但是目前有问题,跨 ...

  3. JavaScript中==和===的区别(面试题目)

    ==用于一般比较,===用于严格比较;==在比较的时候可以转换数据类型,===严格比较,只要类型不匹配就返回flase. 举例说明: "1" == true; //true 类型不 ...

  4. 2016最新Java学习计划

    一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 ...

  5. CRM 安装过程 AD+SQL+CRM

    AD: 通过服务器管理器添加域服务,配置域服务器域名为crm5.lab. 注意:使用高级模式安装. 说明:服务器是windows server 2003 那么就选windows server 2003 ...

  6. 对layoutInflater的理解

    参考该博客:http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html LayoutInflater是一个抽象类,通过调用其实例方法infl ...

  7. HSQL结合润乾报表同步部署问题

     1 . 问题概述 中国登记结算公司为了验证报表模型和附带的样例[内建的不算],都是需要连接携带的DEMO数据源才能够运行, 应用程序[润乾报表]需要部署到UNIX服务器上, DEMO自带的HSQ ...

  8. Android ListView左滑删除、左滑自定义功能

    最近项目需要ListView左滑删除功能,搜集了很多资料发现了一个某一前辈写的库能很简单的实现这个功能,而且有源码,直接拿来使用了. 库名字叫做SwipeMenuListView,下面给大家演示一下使 ...

  9. dbms_random 包的使用

    dbms_random是一个可以生成随机数值或者字符串的程序包. 这个包有 initialize(),seed(),terminate(),value(),normal(),random(),stri ...

  10. <![CDATA[文本内容]]>

    DTD中的属性类型 全名:character data 在标记CDATA下,所有的标记.实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待, CDATA的形式如下: <[CDATA[ ...