关于学习javascript的一些建议
有被朋友或同事问到过,要如何学习前端技术,他们大多是已经掌握其他语言的程序员,或是计算机相关专业的在校生。
每次被问到,总要组织回忆一番,本着DRY原则,我还是根据我学习javascript(下文都简称JS)的经历,总结一些建议出来吧。
以后如果荣幸的被问起,直接发链接给他/她就可以了。
注: 以下内容仅根据本人的学习经验写成,绝非唯一方法, 仅供参考。 且由于本人水平有限,下面说的只是如何从不会JS,到简单入门原生JS,勉强算是领进门的一步。 至于更高级的话题, 请参考其他更专业的文章。
1. 前提
我认为,知识或技能,和财产不同,是无法赠予的。
要学习知识,或是掌握一门技能,第一个最大的前提,是你必须要动手去做。要学习前端或javascript技术,你必须要做好真正动手写javascript代码的准备。
简单来说就是,你需要主动的学习。
2. 对你学习有帮助的能力
下面这些能力并非必须,如果你还不会,那么以下这些能力可能会是你学习JS途中的附带收获:
1. 能使用搜索引擎来自行解决问题: 这是在网上自学的一个很重要的基础技能
2. 将任务拆分的能力: 如果能把一个看似巨大的难题,拆分成很多相对简单且自己能解决的问题,那么你的学习之路会顺畅很多,不容易因无法解决的难题而止步。
3. 设定并实现一个或多个目标
所谓目标,可能是在页面中输出“hello world”,或是你看到某个网站的某个效果很炫,那你就能把这个效果作为目标。 然后用尽你的聪明才智、刻苦耐劳, 把这个目标实现出来。
刚开始不建议把目标设得太难,这很可能打击你的积极性,让你继续不下去。
如果你发现原本设定的目标太难时,可以换一个稍微简单一点的目标。
实现目标过程中,你可能需要把目标拆分,变为若干个更容易解决的问题。
假设你找到的第一个目标,是在屏幕上输出hello world。
如果你是一个完全对javascript没有任何了解的人,可能你需要完成以下步骤:
1. 搜索一下,用什么软件可以写 JS?
你可能会搜到Dreamweaver、sublime text 2、 notepad、 chrome的控制台 等等。
2. 怎样能最简单的让JS运行并看到结果?
你可能需要编写一个html文件,并在里面添加script标签,并写下JS代码,然后在浏览器中打开这个html文件来观察结果。 这可能需要你顺便查找一些html的基础知识,你甚至可能会接触到css的概念。
或你会查到,可以直接在chrome的控制台(按F12,点击console选项卡)下,直接书写js代码,按回车后就能执行。且通过console.log(XX)就能把你的代码结果(XX)输出到控制台 中。
3. 查找JS关于变量声明、赋值的方法。 如果你是通过html输出, 还需要查找怎样用js在html中输出。
…………
第一个目标,如果不是很难,应该很快就能实现。 即使比较难, 通过拆分,和不懈的努力, 你也终究会实现的。
查找技术问题的话, 推荐到google或https://stackoverflow.com/, 百度、必应能解决的技术问题非常有限, 不过由于google常年被墙开始时只好先将就在百度、必应上碰运气了。
这一步的主要目的,是让你对JS有基本的认识, 对JS中的多个技术点建立起模糊的概念。接下来,你可以就已经了解到的“点”进行扩展学习,让这些点连接起来,形成你对JS更广阔的认知。
4. 开始系统的学习JS
如果你已经实现了自己定下的目标,你应该对JS和相关的知识已经至少有一些模糊的概念了。
你在实现目标过程中,已经碰到很多的JS概念(一般是些名词)。 也许是在写代码时自己发现的,也许是在搜索问题时顺带看见的。
你对它们好奇,但是还不太了解,甚至不知道怎么学习它们,或不知道怎么将它们和你已知的东西连起来。
这些概念可能包括对象、函数、闭包、原型链、作用域等等等等。
这个时候,我建议你就可以开始较系统的学习JS了。
方法可以是在网上,根据你听过却不了解但是又感兴趣的名词,搜索一些技术博客。
对一些基础知识,你也可以看看W3C School.http://www.w3school.com.cn/
但是,我认为最好的办法,是买一本好书来看,并跟着书的内容做一些练习。 有两本经典著作,我认为很适合作为JS入门:
《JavaScript高级程序设计》 (Prefessional JavaScript for Web Developers) 泽卡斯 (Zakas. Nicholas C.) (作者), 李松峰 (译者), 曹力 (译者)
《JavaScript权威指南(第六版)》 (JavaScript:The Definitive Guide,Sixth Edition) 弗兰纳根(David Flanagan) (作者), 淘宝前端团队 (译者)
入门的话,读其中一本就够了,也不一定要完全读完。 我只读过第一本, 我觉得把前面十章左右读完,并配合练习, 已经能解决工作中遇到的大部分问题,并能大致说出其中的原理了, 一般问题应该已经难不倒你。
到这时,我觉得你的JS已经算是入门了。
5. 修行在个人
入门只是学习的开始,这时你可以运用你的技能,实现各种需求。 在实现各种需求时,你会遇到更多各种各样的问题。
有些问题可能已经不是单纯写JS代码能很好解决的了。 你可能需要配合一些框架(jquery、angular等等),或一些工具(grunt、sass等等),或一些设计模式, 或一些业务知识。
随着解决更多问题, 你也会积累更多的知识。
之后会是漫长的积累过程, 通过项目经验、看书、看博客、思考、讨论等等,积累你的经验和知识。
你需要持之以恒和刨根问底。
总之,之后就看你自己的了。还是和前提差不多的那句话:你需要主动。
6. 最后, 推荐几个我认为好的网站或博客和一些我觉得不错的书(可能和上面有重复)
文档类:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
问答类:
大神博客:
http://www.cnblogs.com/cloudgamer/
http://www.cnblogs.com/rubylouvre/
不知如何归类:
书的话,已经有一篇博文(不完全关于JS)整理过了,直接上链接: http://www.cnblogs.com/bee0060/p/3972188.html
------------------------------------------------------------------
多谢观看
关于学习javascript的一些建议的更多相关文章
- 一步步学习javascript基础篇(7):BOM和DOM
一.什么是BOM.什么是DOM BOM即浏览器对象模型,主要用了访问一些和网页无关的浏览器功能.如:window.location.navigator.screen.history等对象. DOM即文 ...
- 一步步学习javascript基础篇(1):基本概念
一.数据类型 数据类型 基本数据类型(五种) Undefined Null Boolean Number String 复杂数据类型(一种) Object Undefined:只有一个值undefin ...
- 如何正确学习JavaScript
不要这样学习JavaScript 不要一开始就埋头在成堆的JavaScript在线教程里 ,这是最糟糕的学习方法.或许在看过无数个教程后会有点成效,但这样不分层次结构地学习一个东西实在是十分低效,在实 ...
- 「译」如何正确学习JavaScript
原文:How to Learn JavaScript Properly 目录 不要这样学习JavaScript 本课程资源 1-2周(简介,数据类型,表达式和操作符) 3~4周(对象,数组,函数,DO ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- 学习javascript基础知识系列第三节 - ()()用法
总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...
- [转]如何正确学习JavaScript
原文:How to Learn JavaScript Properly(2014-2-7) 学习时长:6-8周 学习前提:中学水平,无需编程经验 更新(2014-1-7) 在Reddit上创建了一个学 ...
- 2、JavaScript 基础二 (从零学习JavaScript)
11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...
- 如何理解并学习javascript中的面向对象(OOP) [转]
如果你想让你的javascript代码变得更加优美,性能更加卓越.或者,你想像jQuery的作者一样,写出属于自己优秀的类库(哪怕是基于 jquery的插件).那么,你请务必要学习javascript ...
随机推荐
- Winform开发中常见界面的DevExpress处理操作
我们在开发Winform程序的时候,需要经常性的对界面的一些控件进行初始化,或者经常简单的封装,以方便我们在界面设计过程中反复使用.本文主要介绍在我的一些项目中经常性的界面处理操作和代码,以便为大家开 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出
数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,我曾经在之前的一篇文章<Winform开发框架之通用数据导入导出操作>介绍了在Winform ...
- .Net实现拉勾网爬虫
前几天看到一个.NET Core写成的爬虫,有些莫名的小兴奋,之前一直用集搜客去爬拉勾网的招聘信息,这个傻瓜化工具相当于用HTML模板页去标记DOM节点,然后在浏览器窗口上模拟人的浏览行为同时跟踪节点 ...
- Java总结篇系列:Java String
String作为Java中最常用的引用类型,相对来说基本上都比较熟悉,无论在平时的编码过程中还是在笔试面试中,String都很受到青睐,然而,在使用String过程中,又有较多需要注意的细节之处. 1 ...
- MVC之前的那点事儿系列(7):WebActivator的实现原理详解
文章内容 上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivator提供了3种功能,允许我们分别在Http ...
- 孙鑫MFC学习笔记:15多线程
15 1.进程地址空间 2.线程 3.CreateThread创建一个线程 4.CloseHandle关闭线程句柄,要在不再使用线程句柄的时候关闭,递减线程引用计数 5.编辑框默认不支持多行,需要打开 ...
- python 学习笔记5(深浅拷贝与集合)
拷贝 我们已经详细了解了变量赋值的过程.对于复杂的数据结构来说,赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享. 然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个 ...
- nginx和apache的比较
1.nginx的IO是非阻塞的,apache的IO是阻塞的. nginx accept一个连接以后会把它放到EPOLL的消息循环中,APACHE需要启动一个线程,当系统线程达到瓶颈以后,会阻塞网络IO ...
- Java Session超时设置
1.jsp页面直接设置 ); 2.web.xml设置,覆盖 ...
- Android 手机卫士4--设置中心显示
1,自定义属性 SettingActivity.java package com.itheima.mobilesafe74.activity; import com.itheima.mobilesaf ...