过去几年我注意到技术圈一个很奇怪的现象,有太多程序员将那些他们只是有过非常浅显的了解, 但其实根本就不懂的技术写到他们的简历中,这个现象几乎每种语言都有,但这其中最严重的就要数javascript了。
你不知道你不懂
出现这种状况的一个很大的原因就是现如今几乎每个开发者的工作都或多或少要依赖于javascript, 但大多数人并不真的理解这门语言,他们常用的学习方式是复制粘贴,使用这种方式, 你永远不会真正学会这门语言,而只能得到一个你已经懂了的假象。
根据我过去几年学习和使用javascript的经验,在你了解之前,你不会知道你其实不懂, 这听起来有点绕,你真正需要的就是有个人来告诉你你其实不懂,你需要全面系统的学习。 我经常面试一些自豪的将javascript列在他们简历中的家伙,但他们通常也就只能做个简单的onClick处理或是表单验证。 使用jQuery或者Dojo这样的框架当然没什么问题,但是除非你能了解隐藏在这些框架之后的javascript技术, 否则你不可能真正的掌握这些工具包的能量所在,下面就是我划分的从低到高的javascript知识点, 分为基础,中级和高级3个部分,看看你知道多少:
javascript的基础知识
- 知道基本的编程语法,比如循环,判断,try/catch等等 * 理解包括多种函数定义以及赋值的方式,包括匿名函数
- 理解基本的命名空间,全局(window)空间以及对象空间(不包括闭包)
- 理解上下文的角色以及this变量的使用 * 理解各种对象以及函数的初始化和声明方式
- 理解javascript比较操作符,如<, >, ==, ===,以及对象和字符串比较的原理和对象映射 * 理解对象属性和函数的数组索引,以及这和真实的数组之间的区别。
javascript中级知识
* 理解定时器,以及它的工作原理,包括何时以及如何使用定时器来异步执行方法调用
- 关于回调的深度支持,以及如何通过call和apply方法来控制上下文和函数参数传递
- 理解JSON标记以及eval函数 * 理解闭包以及他们如何影响你的代码效率
- AJAX以及对象序列化
javascript高级知识点
- 理解方法的”arguments’变量,包括如何使用它来通过arguments.length重载函数,以及通过arguments.callee来进行递归调用,需要注意使用这个特性有一定的危险性,因为ECMAScript 5 的Strict模式不支持此功能,但jQuery和Dojo都用到了它。
- 高级闭包比如 self-memoizing函数,partially applied函数,以及最可爱的 (function(){})()调用。
- 函数以及HTML prototype,prototype chain,以及如何使用基本的javascript对象和函数(比如Array)来简化代码。
- 对象类型以及instanceof的使用 * 正则表达式和表达式编译
- With语句以及为什么不要使用它们 * 最困难的部分,知道如果利用所有这些工具,并产生处干净,整洁,健壮,快速,可维护以及兼容不同浏览器的代码。
这里的最后一点特别重要并且也是最难实现的,因为javascript天生不够严格的语法, 你的程序很容易就会变成意大利面条式的难以维护的灾难代码,一旦你开始学习javascript语言本身, 你只能通过在大型的Web程序中不断实践才能真正掌握它,这可能要花好几年的时间, 并且你没法从书本上学到这些,我自己每天使用javascript好几小时,已经好几年了, 但我还是在不断寻找更好的方式来编写和重构我的代码,出于这个原因,一开始就使用jQuery这样的框架会很危险, 它会很容易让你的代码变得不可维护,Dojo的Class和Package系统则多少会帮上点忙。
考虑到javascript现在已经通过Node.js这样的项目渗透到了后端,我决定将和Web相关的部分单独拉出来讲讲, 也就是说,如果你想要在Web开发中使用javascript,那么下面这些就是每一个优秀程序员都应该了解的:
- 如何高效的操作Dom(添加,删除以及更新),还有如何通过使用document fragments这样的工具来最小化浏览器的re-flows。
- 夸浏览器的DOM元素属性提取(比如,style,position等等),jQuery和Dojo都可以很好的完成这些工作,尽管如此,理解从CSS和style标签中提取属性的差异,以及如何计算position和size还是很重要的。
- 夸浏览器的事件处理,绑定,反绑定,冒泡,以及如何取得期望的回调上下文。在一次,现成的框架也可以很好的处理这些事情,但是你应该对IE浏览器和W3C标准浏览器之间的不同有所了解。
- 正则表达式选取DOM节点 * 浏览器功能检测以及智能降级
就像你从上面的列表中看到的,对于javascript,除了alert(myval)或者myBtn.onclick=…, 你还需要了解更多东西,这些都是粘贴复制无法学到的,只有通过阅读和练习, 你才能成为一名真正的javascript程序员。
这里推荐两本关于javascript的好书,”the good parts”和”javascript忍者的秘密”, 如果你只是为了装饰简历,我建议你至少也要搞懂基础阶段的那些知识点,并且至少尝试过中极阶段的那些技术。 一旦你发现当你开始自己开发你想要的功能,而不是从其他人那里拷贝粘贴时,你就可以宣称自己懂javascript了, 在那之前,请先别这样说。
如果我错过了什么关于javascript的概念,欢迎给我留言,同时也别忘了分享任何你关于JS或者其它语言的经验。
需要说明的是我并不是一个前端开发者,我实际上是一个后台开发者,但是因为形势需要, 渐渐变成了一个全协议栈的开发者,现如今,几乎每个后端开发者都需要了解javascript, 这也是我写这篇文章的目的,我并不是想表达我对javascript有多了解, 我只是想说javascript是一门非常强大和庞杂的语言,它远比你第一眼看到的要复杂。
本文翻译自”You Don’t Know javascript”(http://www.w2lessons.com/2011/04/you-dont-know-javascript.html), 作者:Michael Woloszynowicz(http://twitter.com/mwbiz)。
分享到:
相关推荐
Web前端学习资料,Javascript学习
如果你是对javascript没有任何基础的小菜,就不要下载它了,因为它并非JavaScript教程,下载了你可能不懂用。 如果你是javascript的老菜,对javascript内置对象与函数非常熟悉,你也不要下载它,下了你也不必查它。
闭包是JavaScript中一个非常重要的概念,它允许一个函数访问并操作函数外部的变量。为了透彻理解闭包,我们可以通过一系列的实例和解释来加深...理解闭包,对任何致力于深入学习JavaScript的开发者来说都是必不可少的。
《你不懂JS:类型与文法》是一本深入解析JavaScript编程语言中类型系统和语法结构的书籍。本书针对初学者和有一定经验的开发者,旨在帮助读者深入理解JavaScript的核心概念,以便更好地编写高质量的代码。 首先,书...
通过亲手构建一个解释器,你可以不依赖于编译原理的深厚知识,而是直接从实践中学习,从而更好地掌握JavaScript的本质。这个过程将是一次富有挑战性和启发性的旅程,让你在编程的世界里更上一层楼。
JavaScript是Web开发中不可或缺的一部分,尤其在面试中,掌握其核心概念是至关重要的。本文将深入探讨JavaScript中的一些关键知识点,包括对象、函数以及它们在实际应用中的使用方式。 首先,我们来了解一下...
《你不懂JS:类型与文法》是系列书籍《你不懂JS》的一部分,该系列旨在深入探讨JavaScript这门语言的核心基础知识,帮助开发者更好地理解和掌握JavaScript,而非仅限于表面的使用或者依赖一些流行框架和库。...
在标签中同样标记为"JavaScript基础",这再次强调了教程的主题,意味着无论你是完全不懂编程的新手,还是希望巩固JavaScript基础知识的学习者,这个资源都将是一个合适的起点。 在压缩包的文件名称列表中,可以看到...
在这个"javaScript脚本游戏学习,看懂了这个游戏就没有什么脚本你解决不了了疯狂坦克"的学习资源中,我们将探讨如何使用JavaScript来创建一个基于浏览器的游戏——疯狂坦克。 1. **基础语法和数据类型** ...
通常,每行的长度不应该超过 80 个字符。如果一行代码太长,可以使用换行符将其分成多行。这样可以使代码更加易读和维护。 注释 注释是代码中非常重要的一部分。注释可以帮助其他开发者了解代码的作用和逻辑。通常...
在课程中,学员将完成一些基础的JavaScript习题,并在后续的工作中能够读懂和维护业务代码。 课程大纲涉及了以下几个方面: 1. JavaScript概述:介绍JavaScript的起源、特点和应用领域。 2. JavaScript基础知识:...
仅仅从网上搜索下载一些技巧便认为自己掌握了JavaScript的人决非是标准的程序员,只会通过一些工具而不懂概念语法之人, 决不是一位好程序员,甚至根本够不上程序员的资格。 不同的浏览器所支持的JavaScript的语法和...
【JavaScript源代码】一篇文章弄懂javascript内存泄漏 在JavaScript中,内存管理对于程序性能至关重要,因为内存泄漏会导致程序效率下降,甚至可能导致应用崩溃。本文旨在深入解析JavaScript中的内存泄漏及其解决...
我不懂JavaScript [Help! I Don’t Know JavaScript!] June 5th, 2007, 作者 Michelle 为了帮助所有对Mootool有兴趣却碰上很多麻烦的人,我整理了这些能够教给你开始从事客户端应用开发所需的所有知识的网上资源。 ...
"JavaScript从零开始学"是一套针对初学者的教程,旨在帮助完全不懂编程的人逐步掌握JavaScript的核心技术和实际应用。 首先,我们需要理解JavaScript的基础语法,包括变量声明(var、let、const)、数据类型(如...
JavaScript,作为一种广泛应用于网页和网络应用的编程语言,已经成为现代前端开发的核心技术。它以其动态类型、基于原型的对象和函数作为一等...无论你是新手还是老手,都应该充分利用这样的资源,不断提升自己的技能。
《你不懂JS:入门与进阶》是一本专注于JavaScript编程的书籍,旨在帮助读者从基础开始,逐步深入理解和掌握这门语言。书中的内容涵盖了编程基础、JavaScript的核心概念,以及YDKJS系列书籍的一些关键话题。 首先,...
JavaScript第五版教程 虽然是英文版 但总体不难理解 应该比较容易看懂的