javascript|分析 JavaScript

javascript|分析 JavaScript

分析 JavaScriptJavaScript 建立在一些非常好的想法和少数非常坏的想法之上 。
那些非常好的想法包括函数、弱类型、动态对象和一个富有表现力的对象字面量表示法 。 那些坏的想法包括基于全局变量的编程模型 。
JavaScript 的函数主要是基于词法作用域的顶级对象 。 JavaScript 是第一个成为主流的 lambda 的语言 。 实际上 , 相对 Java 而言 , JavaScript 与 Lisp 和 Scheme 有更多的共同点 。 它是披着 C 语言外衣的 Lisp 。 这使得 JavaScript 成为一个非常强大的语言 。
现今大部分编程中都流行的要求强类型 , 其原理在于强类型允许编译器在编译时检测错误 。 我们能越检测和修复错误 。 付出的代价就越小 。 JavaScript 是一门弱类型的语言 , 所以 JavaScript 编译器不能检测出类型错误 。 这可能让从强类型语言转向 JavaScript 的开发人员感到恐慌 。 但事实证明 , 强类型并不会让你的测试工作轻松 。 并且我在工作中发现 , 强类型检查找到的那种错误并不是令我头痛的错误 。 另一方面 , 我发现弱类型是自由的 。 我无须建立复立的类层次 , 我永远不用做强制造型 。 也不用疲于应付类型系统想要的行为 。 建立
【javascript|分析 JavaScript】JavaScript 有非常强大的对象在字面量表示法 。 通过列出对象的组成部分 , 它们就能简单地被创建出来 。
原型继承是 JavaScript 中有一个有争议的特性 。 JavaScript 有一个无类别的对象系统 , 在这个系统中 , 对象直接从其他对象继承属性 。 这真的很强大 , 但是对那些被训练使用类去创建对象的程序员来说 , 原型继承是一个陌生的概念 。 如果你尝试对 JavaScript 直接应用基于类的设计模式 , 你将会遭受挫折 。 但是 , 如果你学习使用 JavaScript的原型本质 , 那么你的努力会有所回报 。
JavaScript 在关键思想的选择上饱受非议 。 虽然在大多数情况下 , 这些选择是合适的 。 但是有一个选择相当糟糕;JavaScript 依赖于全局变量来进行连接 。 所有的编译单元的所有顶级变量被撮合到一个被称为全局对象的公共命名空间中 。 这是一件糟糕的事情 , 因为全局变量是魔鬼 , 并且在 JavaScript 中它们是基础性的 。 幸好 , 我们也看到 JavaScript 也给我们提供了缓解这个问题的方法 。
JavaScript 是一门有许多差异的语言 。 它包含很多错误和尖锐的边角 , 所以你可能会疑惑:「为什么我要使用 JavaScript 」有两个答案 。 第一个是你没有选择 。 WEB 已变成一个重要的应用开发平台 , 而 JavaScript 是唯一一门所有浏览器都可以识别的语言 。 很不幸 , Java 在浏览器都可以识别的语言 。 否则想用强类型语言的人就有其他的选择了 。 但是 Java 确实失败了 , 而 JavaScript 仍蓬勃发展着 , 这恰恰说明 JavaScript 确有其过人之处 。
另一个答案 , 尽管 JavaScript 有缺陷 , 但是它真的很优秀 , 它既轻量级又富有表现力 。 并且一旦你熟练掌握了它 , 就会发现函数式编程是一件很有趣的事 。
但是为了更好使用这门语言 , 你必须知道它的局限 , 我将会无情地揭示它们 。 不要因此而气馁 。 这门语言的精华部分足以弥补它鸡肋的不足 。
一个简单的 DEMO如果你有一个 WEB 浏览器和任意一个文本编辑器 , 那么你就有一个运行了 JavaScript 程序所需要的一切 。 首先 , 请创建一个 HTML 文件 , 可以命名为 program.html
<!DOCTYPE html><htmllang=\"en\"><head><metacharset=\"UTF-8\">