`

别告诉我你懂Javascript

阅读更多

过去几年我注意到技术圈一个很奇怪的现象,有太多程序员将那些他们只是有过非常浅显的了解,但其实根本就不懂的技术写到他们的简历中,这个现象几乎每种语言都有,但这其中最严重的就要数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“, 作者:Michael Woloszynowicz

14
17
分享到:
评论
1 楼 pml346680914 2012-03-30  
深有体会,javascript还只是略懂皮毛

相关推荐

    JavaScript标准参考教程

    《JavaScript标准参考教程》是一本全面介绍JavaScript编程语言的书籍,其内容涵盖了从基础语法、数据类型、函数到高级特性如数组操作、错误处理、编程风格等各个方面的知识。阮一峰作为作者,将多年的经验和网络资料...

    深入理解JavaScript系列

    本书是一本全面、深入介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript编程要点;第2部分介绍JavaScript的发展和技术背景;第3部分深入探索JavaScript,介绍了语法...

    JavaScript文档

    本资源包包含了多个关于JavaScript的重要参考资料,包括“JavaScript权威指南(英文版).chm”、“javascript5.5.chm”、“css2gb.chm”以及“JavaScript对象与数组参考大全 .chm”。 首先,我们来看“JavaScript权威...

    javaScript经典实例

    JavaScript,作为全球最广泛使用的编程语言之一,是创建交互式网页和动态应用的关键技术。它是一种轻量级的脚本语言,主要运行在浏览器环境中,但也适用于服务器端(如Node.js)和其他平台。"JavaScript经典实例"这...

    JavaScript学习指南 高清 PDF

    JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一。这份"JavaScript学习指南"高清PDF,无疑为想要深入理解JavaScript的初学者或有一定基础的开发者提供了宝贵的资源。下面,我们将深入探讨...

    javascript试题(附答案)

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在客户端脚本方面扮演着核心角色。这份"javascript试题(附答案)"是为初学者设计的,旨在帮助他们更好地理解和掌握JavaScript的基础知识。 一、变量与数据...

    JavaScript课堂习题答案

    JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案...

    JavaScript基础复习大纲

    重点提示 `int short boolean,float` 这些都是保留值,可以先告诉学员 JavaScript 中声明变量是不需要指定类型的。 八、JavaScript 的基本语法 JavaScript 中的标识符,与 Java 定义标识符一摸一样。JavaScript ...

    javaScript api

    JavaScript API 是一种重要的编程资源,它为开发者提供了与JavaScript语言交互的接口和工具。这个离线版的JavaScript API 指南,以CHM(Compiled Help Manual)格式提供,是开发者学习和查阅JavaScript相关功能和...

    现代JavaScript教程

    现代JavaScript教程是一个全面的学习资源,旨在帮助开发者深入理解JavaScript这一重要的编程语言。JavaScript,作为Web开发的核心技术之一,被广泛用于构建交互式的网页和应用程序。本教程覆盖了从基础概念到高级...

    org.mozilla.javascript-1.7.2.jar

    《深入解析org.mozilla.javascript-1.7.2.jar》 在Java开发中,JavaScript引擎的使用日益广泛,其中Mozilla的Rhino引擎是备受开发者青睐的一款。本文将围绕"org.mozilla.javascript-1.7.2.jar"这个资源包,详细讲解...

    JavaScript权威指南(第6版).JavaScript:The.Definitive.Guide

    中文名: JavaScript权威指南 (第6版) 原名: JavaScript: The Definitive Guide: Activate Your Web Pages, 6th edition 作者: David Flanagan 版本: 英文文字版-pdf/EPUB + 完整书中源代码 出版社: O'Reilly 书号: ...

    JavaScript前端开发案例教程-源代码.rar

    JavaScript,作为全球最广泛使用的编程语言之一,是前端开发的核心技术。这个名为"JavaScript前端开发案例教程-源代码.rar"的压缩包文件提供了一系列实践案例,帮助开发者深入理解和掌握JavaScript在网页开发中的...

    JavaScript犀牛书电子版

    《JavaScript犀牛书》是JavaScript编程领域的一本经典著作,被广大开发者誉为"骨灰级"的学习资料,尤其适合初学者入门。这本书全面而深入地介绍了JavaScript语言的核心概念、语法以及实际应用,旨在帮助读者建立起...

    JavaScript—The Definitive Guide, 6th Edition[JavaScript权威指南](英文版)

    经典的JavaScript教程 《O'Reilly精品图书系列:JavaScript权威指南(第6版)》讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScriptAPI。《O'Reilly精品图书系列:JavaScript权威指南(第6版)》涵盖了...

    JavaScript之Date对象(源代码)

    JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象...

    Pro JavaScript Techniques(jQuery之父作品:精通Javascript英文原版+源码)

    《Pro JavaScript Techniques》是John Resig,也就是jQuery之父的作品,这本书深入探讨了JavaScript编程的各种高级技巧和实用方法。本书的出版商是Apress,它并非普通的扫描版,而是高质量的原版电子书,旨在为读者...

Global site tag (gtag.js) - Google Analytics