JavaScript如何入门?
1, 建议阅读“javascript高级程序设计”第三版电子版。(我刚开始学习,我向表哥(软件工程师)说我想做前端,于是,他帮我买了这本书,好的书大家都会推荐,很容易在网上找到,也没有必要我说一定是这本书就是这本书,可以自由选择)
经过前辈们的总结或本人的实践经历,自学的同学建议是这样,找本js入门的书和视频结合看。一个主攻面试,一个主攻实践。
看书的目的主要是掌握理论知识,梳理js的知识结构,最主要的一点是为了应付面试。面试的主要环节是为了表达自己的想法,只凭简单的理解,是不能完全的表达出一个问题的广度或深度,只有结合了行业中的术语约定或一些习惯叫法,表达出来的意思才更专业。如果不是这样,表达出来的意思别说面试官听不懂,连自己都感觉要么表达不出来,要么表达的不是想要的,我碰到了一位女生来面试,我们问她响应式什么?她说没听说,另外她说他工作一年了,再说到另一些术语,还要跟她解释了是什么,她不是不明白,只是没概念。
但书着重于对理论知识的阐述,缺少实际例子的支持,很难快速的消化。这时候视频可以弥补这个缺陷,而且视频用简单的代码实现一些常见的效果,学习兴趣很快就能被吸引。但是对js的高级特性,个人感觉视频没有达到那个深度。而且js的一些基础的问题,或一个知识的扩充,限于各种条件的限制,可能无法完全表达出来。所以要结合书来补充。
学习的心态是:不急,坚持。(每天要一定量,不能太多,也不能太少,看你的基础而定)
2, 建议欣赏,视频资料。
学习主要技巧是动手及主动思考,视频在欣赏的同时记得跟敲代码不低于三遍,直到隔一天隔一周能重复敲出代码或回忆起思路为止。而且边敲边做笔记,以做复习时快速的查阅之用。学习的最大技巧是动手,其实每天都在成长,只是感觉不明显而已。但这个月与前几月相比,已经有量的变化,量变引起质变。
敲出来的代码,思路不清晰时,可以在firebug,chrome里边打个断点跟一下,理理思路,理解代码的逻辑,这样影响才会深刻。初学者没办法都是这样,也只能这样。但是初期可能稍为慢一点,但一直不会这么慢,也不会想象的那么长,因为随着基本概念的掌握,编码技巧的熟悉,开发工具的熟练,消化视频的速度会越来越快。
另外一个建议:QQ群绝对不是学习的主战场,群只是学习的辅助手段,要是想安心学习就是关QQ,断网,靠自己。
我见过一个童鞋,问网页psd文件谁有,问了半天,说什么百度没psd文件,说什么怎么难啊,别人在群里刷屏,他也在群里刷,我恰好有些东西在群看,看到这位同学,我百度网页psd设计稿,百度显示第一就是网页psd下载,然后将链接地址发给他。就是这么简单的事,之后他说怎么差,说怎么办,群里刷屏,还在那里继续卖萌……请问这是学习吗?
上面例子说得不好听就是说学逗唱。因此,我们的学习的态度一定务实,生活是残酷的,战场是血腥的,一份耕耘,一份收获,务实的学习好基础才能走的更远。
敲出来的代码,思路不清晰时,可以在firebug,chrome里边打个断点跟一下,理理思路,理解代码的逻辑,这样影响才会深刻。初学者没办法都是这样,也只能这样。但是初期可能稍为慢一点,但一直不会这么慢,也不会想象的那么长,因为随着基本概念的掌握,编码技巧的熟悉,开发工具的熟练,消化视频的速度会越来越快。
视频:
http://zhinengshe.com/video.html
js视频
http://bbs.miaov.com/forum.php?mod=viewthread&tid=7385
http://www.miaov.com/2013/miaovideo/miaovideo.html
其它书籍总结分享:
http://www.cnblogs.com/Henrya2/archive/2009/01/22/1380096.html
js 书籍:
http://www.cnblogs.com/Darren_code/archive/2011/06/29/javascript-learn.html
js学习流程+书籍
http://limu.iteye.com/blog/1267475
javascript那些书
http://www.javascript100.com/?p=394
如果学习js
http://limu.iteye.com/blog/1267475
javascript那些书
http://www.yaohaixiao.com/?p=8
写给想学JavaScript朋友的一点经验之谈
http://www.zhihu.com/question/19713563
如何循序渐进有效学习 JavaScript?
http://www.zhihu.com/question/20246142
前端其它资源
http://www.w3cplus.com/page/books.html
前端书籍分享
文/丁向明
做一个有博客的web前端自媒体人,专注web前端开发,关注用户体验,加我qq/微信交流:6135833
http://dingxiangming.com
最全javascript学习指南,快速了解从入门到精通需要掌握哪些知识
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。
JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。
JavaScript的标准是ECMAScript 。截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1,旧版本的浏览器至少支持ECMAScript 3 标准。2015年6月17日,ECMA国际组织发布了ECMAScript的第六版,该版本正式名称为 ECMAScript 2015,但通常被称为ECMAScript 6 或者ES2015。
通过使用指南和教程来学习如何用JavaScript语言编程。
一些基本问题,比如“JavaScript 是什么?”、“它是怎么样的?”、“它可以用来做什么?”;同时还讨论如变量、字符串、数值和数组等 JavaScript 的核心特性。我们需要关注常见的代码块类型,如条件语句,循环,函数和事件。如果你想进一步使用该语言撰写更有效率的代码,理解 JavaScript 面向对象的精髓是很重要的。
好吧,上面太全了,来点精简版:
肉容中包含了ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。
ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。
ES6+常用的知识点结合如下:
- 前言
- ECMAScript 6简介
- let 和 const 命令
- 变量的解构赋值
- 字符串的扩展
- 字符串的新增方法
- 正则的扩展
- 数值的扩展
- 函数的扩展
- 数组的扩展
- 对象的扩展
- 对象的新增方法
- 运算符的扩展
- Symbol
- Set 和 Map 数据结构
- Proxy
- Reflect
- Promise 对象
- Iterator 和 for…of 循环
- Generator 函数的语法
- Generator 函数的异步应用
- async 函数
- Class 的基本语法
- Class 的继承
- Module 的语法
- Module 的加载实现
- 编程风格
- 读懂规格
- 异步遍历器
- ArrayBuffer
- 最新提案
- Decorator
- JavaScript 简介
- 手册与规范
- 代码编辑器
- 开发者控制台
- Hello, world!
- 代码结构
- 现代模式,\”use strict\”
- 变量
- 数据类型
- 交互:alert、prompt 和 confirm
- 类型转换
- 基础运算符,数学
- 值的比较
- 条件分支:if 和 \’?\’
- 逻辑运算符
- 空值合并运算符 \’??\’
- 循环:while 和 for
- \”switch\” 语句
- 函数
- 函数表达式
- 箭头函数,基础知识
- JavaScript 特性
- 在浏览器中调试
- 代码风格
- 注释
- 忍者代码
- 使用 Mocha 进行自动化测试
- Polyfill 和转译器
- 对象
- 对象引用和复制
- 垃圾回收
- 对象方法,\”this\”
- 构造器和操作符 \”new\”
- 可选链 \”?.\”
- 对象 — 原始值转换
- 数据类型
- 原始类型的方法
- 数字类型
- 字符串
- 数组
- 数组方法
- Iterable object(可迭代对象)
- Map and Set(映射和集合)
- WeakMap and WeakSet(弱映射和弱集合)
- Object.keys,values,entries
- 解构赋值
- 日期和时间
- JSON 方法,toJSON
- 递归和堆栈
- Rest 参数与 Spread 语法
- 变量作用域,闭包
- 旧时的 \”var\”
- 全局对象
- 函数对象,NFE
- \”new Function\” 语法
- 调度:setTimeout 和 setInterval
- 装饰器模式和转发,call/apply
- 函数绑定
- 深入理解箭头函数
- 属性标志和属性描述符
- 属性的 getter 和 setter
- 原型继承
- F.prototype
- 原生的原型
- 原型方法,没有 __proto__ 的对象
- Class 基本语法
- 类继承
- 静态属性和静态方法
- 私有的和受保护的属性和方法
- 扩展内建类
- 类检查:\”instanceof\”
- Mixin 模式
- 错误处理,\”try…catch\”
- 自定义 Error,扩展 Error
- 简介:回调
- Promise
- Promise 链
- 使用 promise 进行错误处理
- Promise API
- Promisification
- 微任务(Microtask)
- Async/await
- Generator
- 异步迭代和 generator
- 模块 (Module) 简介
- 导出和导入
- 动态导入
- Proxy 和 Reflect
- Eval:执行代码字符串
- 柯里化(Currying)
- Reference Type
- BigInt
学习如何管理浏览器页面:添加元素,操纵元素的大小和位置,动态创建接口并与访问者互动。
- 浏览器环境,规格
- DOM 树
- 遍历 DOM
- 搜索:getElement*,querySelector*
- 节点属性:type,tag 和 content
- 特性和属性(Attributes and properties)
- 修改文档(document)
- 样式和类
- 元素大小和滚动
- Window 大小和滚动
- 坐标
- 浏览器事件简介
- 冒泡和捕获
- 事件委托
- 浏览器默认行为
- 创建自定义事件
- 鼠标事件
- 移动鼠标:mouseover/out,mouseenter/leave
- 鼠标拖放事件
- 指针事件
- 键盘:keydown 和 keyup
- 滚动
- 表单属性和方法
- 聚焦:focus/blur
- 事件:change,input,cut,copy,paste
- 表单:事件和方法提交
- 页面生命周期:DOMContentLoaded,load,beforeunload,unload
- 脚本:async,defer
- 资源加载:onload,onerror
- DOM 变动观察器(Mutation observer)
- 选择(Selection)和范围(Range)
- 事件循环:微任务和宏任务
教程的前两部分未涉及的其他主题的内容列表。此处没有明确的层次结构,你可以按你需要的顺序阅读文章。
- 弹窗和 window 的方法
- 跨窗口通信
- 点击劫持攻击
- ArrayBuffer,二进制数组
- TextDecoder 和 TextEncoder
- Blob
- File 和 FileReader
- Fetch
- FormData
- Fetch:下载进度
- Fetch:中止(Abort)
- Fetch:跨源请求
- Fetch API
- XMLHttpRequest
- 可恢复的文件上传
- 长轮询(Long polling)
- WebSocket
- Server Sent Events
- Cookie,document.cookie
- LocalStorage,sessionStorage
- IndexedDB
- 贝塞尔曲线
- CSS 动画
- JavaScript 动画
- Web components
- 从星球轨道的高度讲起
- Custom elements
- 影子 DOM(Shadow DOM)
- Shadow DOM 插槽,组成
- 给 Shadow DOM 添加样式
- Shadow DOM 和事件(events)
- 模式(Patterns)和修饰符(flags)
- 字符类
- Unicode:修饰符 “u” 和 class \\p{…}
- 锚点(Anchors):字符串开始 ^ 和末尾 $
- Flag \”m\” — 多行模式
- 词边界:\\b
- 转义,特殊字符
- 集合和范围 […]
- 量词 `+,*,?` 和 `{n}`
- 贪婪量词和惰性量词
- 捕获组
- 模式中的反向引用:\\N 和 \\k<name>
- 选择(OR)|
- 前瞻断言与后瞻断言
- 灾难性回溯
- 粘性标志 \”y\”,在位置处搜索
- 正则表达式(RegExp)和字符串(String)的方法
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。