`

将JavaScript 作为第一编程语言

阅读更多
(注:之前OurJS有人分享过: 为什么我不建议你将JavaScript作为主力语言 ,可以看出,有过丰富编程经验的程序员是很难一下子接受JS的继承方式的,此文有着明显反驳的意思,不过也表达作者对JS语法风格的喜爱)



在可汗学院(Khan Academy),我们一直在调查使用一些新的有趣的方法教学生们计算机科学。其中最有趣的是我们趋向于教他们JavaScript作为他们的第一编程语言。

我们在一个非常独特的地位,因为我们的初衷是教那些已经通过我们之前的数学和Science-centric 课程的学生。因为这样我们可以创造一些相当引人注目的活动和项目,而这些是其他人无法做到的。

以JavaScript作为第一编程语言教学的前景事实上是很令人振奋的。



给有经验的经典继承开发者教原型继承一般是很令人沮丧的(因此导致很多JavaScript库如雨后春笋般涌现,这些库试图复制JavaScript中的经典继承模式,对于它本身来说,这是非常古怪的)。教那些之前从来没有看到过任何继承方式的开发者,学习原型继承明显是一件容易的事,这和教函数编程是一样的。JavaScript是一门强大的语言,我们可以从中体验函数编程,而且最终可以成为我们的课程焦点。

当我们已经开始着眼于JavaScript作为第一编程语言的前景,一些bug显现出来(这对那些已经有过一些JavaScript开发经验的开发者来说是显然的)。为了确保一般的bug不突然出现,我们将要在编辑器中使用一些代码格式验证(JSLint,JSHint或者类似的)给用户上下文关联的信息,比如他们的代码发生了什么,为什么他们必须得用一种确定的格式写他们的代码。

然而我们想要越过基本的语法调整找到可以更容易的使用这种语言的方式。这里详细的列出了两个变化可能让你轻松入门。



注意 : 如果你正在教一些之前从来没看到这种语言而且确实只用一组特定的、编写好的代码库的人,那么这些特别的建议只会在这种情况下适用。当然,为了让学生们达到“看到任意的跨浏览器JavaScript代码片段,并且理解它的作用”这种水平,还需要交给他们更多。



强制类型装换

强制类型转换完全是一团糟,就如很多人所指出的,道格拉斯Crockford教过的还有《JavaScript语言精髓》这本书中所讲。

可能在教育很久之后在讨论这个比较有意义,就像学习原型,函数编程和闭包之后。基本上,在一切之后,强制类型转换实际上是很重要的。

name==="John"
我推荐的第一个变化就是学生只看到和使用,===(和!==)。当使用‘==’确实有句法上简短的优点,但是附加有太多的强制转换的负累,让在编程学习中尝试尽早教学成为徒劳之举。

一个值得以后教的异常就是在你期望看到一个变量是否是空值(null)或未定义(undefined)的情况下,这可以通过一个简单的验证:someVar==null轻松地做到,也是==的有用的案例。(另外一个值得注意的异常是IE浏览器小错误,===检查和Window对象冲突总是会返回false,但是,在我们的课程中覆盖像这样的特殊浏览器问题是不太可能的)



Falsy值

出于和==一团糟同样的原因,falsy 值也是一团糟。强制执行严格的的布尔检查将导致更少的边界情况但是也必然导致跟多的代码量。可能falsy值的教学可以限制在布尔值,null值,和undefined. 而剩下数字类型和String类型作为之后的练习。



函数声明

或许, 我们能做的最有趣的变化是非常微妙的,但是这是为创建匿名函数避开正常的函数声明并将它们分配给一个变量。



// 不要这样做:
function getData(){ }
// 而应该这样做:
var getData = function(){ }


当你使用这项特别的技术时,下面列出了一些好的习惯可以灌输给他们。

让理解 “函数是一个对象”更容易。我发现当你给新开发者展示将一个函数赋给一个变量时,函数事实上是一个对象瞬间就会变得很明显,而且可以这样操作(一个函数可以作为一个参数传递给另一个函数)。这样,学生们可以更好地理解函数编程。

强调写好分号的习惯,传统的函数声明只有在分号不需要的情况下使用(一般是保存条件声明和循环),而且当他们一直被需要的时候它会更加明显。

不要有太多和传统的函数和域相关的包袱。



块作用域

要引导学生去理解这个仅存的区域毋庸置疑是一个挑战,到现在我还没有找到一个很好地解决办法。变量声明在for循环提升的问题足以让大多数开发人员头晕目眩。我得看看我们不能想出一些直观的方式解释变量声明是如何工作的(将它与警惕的lint检查结合执行)而不是一个纯粹的技术解决方案。

(While (function(){ ... })();
是一个我很怀疑的办法,我们可以尽早教那让它有价值。



JavaScript 作为第一编程语言

我们应该注意当我们把JavaScript作为第一编程语言很大程度上源于他的普遍性,更多劳动力的需求,无需安装和创造易于和朋友分享的东西的能力的时候,我们不是目光短浅的专注于JavaScript。我们可以从其他的语言学到很多,更不用说和浏览器的并不十分相关的JavaScript的整个一套技能, 我们有必要尽可能尝试让更多的人加入到我们的课程中来。

在下面的视频中我较多的谈论我们使用JavaScript的选择以及我们在开发中将要支持的浏览器。

和大家一样,我想避免那些可能导致跨浏览器怪异问题出现的特征。因此,我们将广泛使用库(为画图canvas或操作DOM)而且只用在我们最终支持的浏览器上都表现一致的JavaScript语言特征。


(注* 这篇文章对目前的JS语法体系还是非常推崇的,之前也有人表达过类似观点,反对对JS语法做出较大修改,参见:使用简单的JavaScript,我们为什么应该抵制ES6的一些特性 )
分享到:
评论

相关推荐

    《JavaScript语言精髓与编程实践》精选版

    本迷你书摘引了《JavaScript语言精髓与编程实践》一书有关语言讨论的关键章节(主要在第三、四、五章),从JavaScript 无关的角度综论这些语言的产生发展,以及特性的概要。作为纯语言学范畴的讨论,读者在本摘引中...

    《JAVASCRIPT语言精髓与编程实践》.周爱民PDF

    《JAVASCRIPT语言精髓与编程实践》是周爱民撰写的一本深入解析JavaScript编程的著作,这本书旨在帮助读者理解JavaScript的核心概念,并将其应用于实际的编程实践中。JavaScript,作为全球最广泛使用的脚本语言,是...

    JavaScript语言精髓与编程实践完整版

    JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一,也是现代互联网应用程序的重要组成部分。本书“JavaScript语言精髓与编程实践”全面深入地探讨了JavaScript的各个方面,旨在帮助开发者...

    js_正则表达式实战JavaScript语言精髓与编程实践

    正则表达式(Regular Expression)是编程语言中用于模式匹配和字符串处理的重要工具,尤其在JavaScript中,它的使用无处不在,无论是数据验证、字符串搜索替换,还是在DOM操作中提取信息,都离不开正则表达式的支持...

    javascript语言精粹 pdf

    了解这些基本数据类型及其用法是学习JavaScript的第一步。操作符如赋值、比较和逻辑操作符则是编写程序逻辑的关键。此外,流程控制语句(如if...else、for、while)帮助我们根据条件执行不同的代码块,实现程序的...

    编程语言原理(第10版

    根据提供的标题“编程语言原理(第10版)”及描述“编程语言原理(第10版 编程语言原理)”,我们可以推断出这本书主要讲述了编程语言的基础理论与实践应用,是学习和理解编程语言设计与实现的重要参考资料。...

    JavaScript_DOM编程艺术第二版(中文)

    总的来说,"JavaScript DOM编程艺术第二版"是一本全面介绍JavaScript与DOM结合的实践指南,它将帮助读者从初级到高级,系统地掌握JavaScript在网页动态化中的应用,提升Web开发技能。通过阅读这本书,开发者不仅能...

    编程语言排行榜

    在2012年3月的TIOBE编程语言排行榜中,JavaScript表现出色,超越Perl和Python,位列第八。这一变化反映了JavaScript在Web开发领域的广泛应用及其在开发者中的受欢迎程度。此外,C#继续保持上升趋势,占据第三的位置...

    javascript面向对象编程.pdf

    现代JavaScript编程语言的发展经历了渐进和稳固的过程。过去十年,它从一门被看作简单的玩物式语言,逐步发展成为全球公司和开发者构造应用的重要编程语言。现代JavaScript语言之所以可靠、健壮且强大,得益于无数...

    JavaScript DOM编程艺术.pdf

    《JavaScript DOM编程艺术》是Jeremy Keith所著的一本关于JavaScript和DOM(文档对象模型)编程的经典图书,它不仅阐述了JavaScript和DOM的基本知识,还着重讲解了DOM编程技术背后的思路和原则。本书被赞誉为Web设计...

    JavaScript DOM编程艺术(第2版pdf)+源代码

    JavaScript DOM编程艺术(第2版)是一本深受程序员喜爱的JavaScript技术书籍,专注于讲解如何使用JavaScript与Document Object Model(DOM)进行交互。DOM是Web页面的结构化表示,它允许我们通过编程方式操纵HTML和XML...

    JavaScript DOM编程艺术【第2版&高清】.pdf

    1. JavaScript基础知识:JavaScript是一种在浏览器中运行的脚本语言,它是实现网页动态效果和交云的核心技术之一。要精通DOM编程,首先要对JavaScript语言本身有足够的理解,包括变量、数据类型、运算符、函数、对象...

    javascript编程指南(第四版)

    总的来说,《JavaScript编程指南(第四版)》是一本全面覆盖JavaScript语言特性和实践的资源,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过阅读本书,你将能够深入理解JavaScript的工作原理,从而更好...

    JavaScript语言精髓与编程实践(第三章).pdf

    JavaScript 语言作为一门广泛使用的脚本语言,虽然其语法中包含了一些函数式编程的元素,但本质上仍属于非函数式的命令式语言。本章节主要探讨了JavaScript的非函数式语言特性,尤其是它与结构化编程和面向对象编程...

    JavaScript编程精解 (第一版 带书签) 中文PDF扫描版

    《JavaScript编程精解 (第一版 带书签) 中文PDF扫描版》是一本专注于JavaScript(通常简称为JS)编程语言的书籍,涵盖了ES5(ECMAScript 2016标准)的编程技术。这本书适合那些希望提升前端开发技能的读者,特别是...

    《JavaScript编程精解》.pdf

    文件标题是“《JavaScript编程精解》.pdf”,描述中提到了“JavaScript 编程精解 中文第一版”,而标签同样为“JavaScript 编程精解”。部分内容重复提及了访问“稀酷客”网站的链接,这可能是出版商提供的额外资源...

Global site tag (gtag.js) - Google Analytics