javascript曾经带给人许多误解,例如如果你不了解它的历史,那么你可能困惑它和java有什么关系,其实它们一点关系都没有。网景公司1995年在Navigator 2.0 中引入这门语言时它叫LiveScript,当时主要用来验证表单。后来被重命名为javascript,因为想借助java的魅力成为构建web程序的主流语言。不幸的是,因为它里面含有java,人们常常认为它是java的精简版。事实上js仅仅模糊的像java,它在语法上和C、Perl、Python也相似。

尽管它的名字引起很大的困惑,但是还是被浏览器开发商接受了。在网景公司把js引入它们2.0的浏览器的时候,微软也把类似的语言引入ie3.0,并命名为JScript。Opera公司从3.x的浏览器也开始支持js。许多其他的浏览器也开始支持js。后来浏览器开发商开始扩展js,于是形成了各种版本的js或jscript.下表详细的列举了不同浏览器支持的js各种版本,不同版本支持的js特性全书都在讨论,附录B提供了js不同版本的特性。

因为js正在快速的改变,而且对跨平台的支持也不一致,因此要注意你使用的js的版本。因为不同的js支持不同的设计,开发者应该编写不同条件下的脚本代码,本书大多数都在讨论这个问题,详细内容看第23章。

因为跨浏览器的js给开发者带来了噩梦,因此标准的js诞生了,被称为ECMAScript(发音eck-ma-script),最新版是3.0的。大多数浏览器基本上完成支持ECMAScript,因为它的名字已经引起注意,大多数的开发者已经开始把它当做像js一样。

注意:js2.0和ECMAScript4.0会一起随着标准化而推进。随着网景公司的没落,什么时候实现这些版本的语言是不清楚的,到目前为止,浏览器还没有实现这个版本。但是本书会提到重要的不同点。

尽管ECMAScript的使用一直在提升,但是js的使用仍然面临挑战。ECMACscript首要考虑的是语言的核心特性如流程控制语句(如if,for,while等)和数据类型。但是js的一些对象集仍然和运行环境有关。这些对象,如window,navigator,history,screen等并不是ECMAScript的一部分。它们是传统的浏览器对象模型(Browser Object Model)或bom的集合。事实上浏览器有基本上相似的细节上不同的BOM对象集,这引起了很大的困惑并且不兼容其他浏览器。bom不兼容最严重的是在4.x版本的浏览器引入动态html或dhtml时。实际上没有像dhtml这样的技术。观点来自于推广4.x的浏览器,并且说动态的效果来自于html,css,js的组合。如果你在讨论dhtml,你其实是在讨论它们的一些交集,它并不是一个脱离js的全新的技术。

幸运的是W3C已经定义了一些标准的对象,用它们可以访问web页面控件如html元素和闭合的文本框架,css属性,甚至是xml元素。希望这样能消除dhtml兼容性的噩梦。它们被称为文档对象模型(Document Object Model)或简称dom。它定义了操作标记行语言html元素的标准方式。然而并没有说什么是传统的对象模型的一部分和什么是dom,还有dom实现的不同。幸运的是现在的浏览器开始抛弃不兼容的特性,页面对象定义的越来越好了,详细的dom信息请看第10章或 www.w3.org/DOM

由ECMAScript制定的核心js,浏览器对象、文档对象提供了各种特性。但是除了核心部分,其他的在不同浏览器之间都有一些不同。

学习js的历史对于掌握js的使用很重要,因为它解释了js更改背后的动机。js作为一种强大的客户端技术,主要的使用方面有:  表单验证     页面渲染和特效  导航系统  基本的数学计算  动态文档  结构文档的操作     js也有它的限制,它不支持错误处理、强类型、构建大程序的特性。尽管它有这些缺点还让人误解,但是它却用途广泛。

javascrit2.0完全参考手册(第二版) 第1章第2节:javascript的历史和使用的更多相关文章

  1. javascrit2.0完全参考手册(第二版) 第2章第2节 语言特性

    脚本执行顺序     js代码是按照它们在html中出现的顺序一行一行被解释的.这表明把函数定义和变量声明放到<head>中会很好.这保证了函数的代码和事件相关的处理程序不会立即执行. 大 ...

  2. javascrit2.0完全参考手册(第二版) 第2章第1节 基本定义

    在这里,我们介绍一些将要使用的编程语言术语.表2-1提供了精确定义的概念. Table 2-1: 编程语言的基本术语 名字 定义 例子 Token令牌 最小的不可分割的词汇的语言单位.一个连续的字符序 ...

  3. javascrit2.0完全参考手册(第二版) 第1章第1节 在XHTML文档中增加javascript

    通常,向文档中增加script脚本使用<script>元素,在HTML中增加脚本的方式有4中: (1)放到<script></script>块中: (2)<s ...

  4. javascrit2.0完全参考手册(第二版) 第2章第4节 基本的数据类型

    每一个变量都有一个确定的类型表明它存储什么样的数据.js基本的数据类型有strings字符串.numbers数字.Booleans布尔类型.字符串是使用双引号或单引号包含的一串字符:数字包括整数或浮点 ...

  5. javascrit2.0完全参考手册(第二版) 第2章第3节 变量

    变量存储数据.每个变量都有一个名字,叫做标识符.在js中声明变量使用var关键字,var为新的数据分配存储空间,或者指示一直标识符正在使用.声明变量非常简单: var x; 这个语句告诉解释器一个新的 ...

  6. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版 ...

  7. Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装

    Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装  一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装Virt ...

  8. CSAPP深入理解计算机系统(第二版)第三章家庭作业答案

    <深入理解计算机系统(第二版)>CSAPP 第三章 家庭作业 这一章介绍了AT&T的汇编指令 比较重要 本人完成了<深入理解计算机系统(第二版)>(以下简称CSAPP) ...

  9. Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建

    一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...

随机推荐

  1. phpcms v9中调用栏目及调用多个子栏目中的文章列表

    调用一个指定栏目列表:            {pc:content action="lists" catid="6" order="id DESC& ...

  2. WPF 多语言实现

    很多国际化的程序都提供了多语言的选项,这样方便不同国家的使用者更方便的使用软件.这篇博客中将介绍在WPF中实现多语言的方式. 方式一,使用WPF动态资源的方式实现.先简单介绍下StaticResour ...

  3. 关于socket——SO_SNDBUF and SO_RECVBUF

    转自:http://blog.csdn.net/wf1982/article/details/38871521 参见 http://stackoverflow.com/questions/425741 ...

  4. 10个很棒的学习Android 开发的网站(转)

    看到江湖旅人 写的<10个很棒的学习iOS开发的网站 - 简书>,所以就忍不住写Android 啦,也希望对大家有帮助.我推荐的网站,都是我在学习Android 开发过程中发现的好网站,给 ...

  5. android:layout_gravity和android:gravity属性的区别(转)

    gravity的中文意思就是”重心“,就是表示view横向和纵向的停靠位置 android:gravity:是对view控件本身来说的,是用来设置view本身的文本应该显示在view的什么位置,默认值 ...

  6. 解决"System.AccessViolationException”类型的未经处理的异常在 未知模块(IIS Worker Process 已停止工作)导致无法连接远程数据库的问题

    解决方法: 用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运行,这个重置LSP连接)

  7. ZOJ 3494 BCD Code(AC自动机+数位DP)

    BCD Code Time Limit: 5 Seconds      Memory Limit: 65536 KB Binary-coded decimal (BCD) is an encoding ...

  8. 【T_SQL】 基础 事务

    1.使用 T-SQL 语句来管理事务       开始事务:BEGIN TRANSACTION       提交事务:COMMIT TRANSACTION       回滚(撤销)事务:ROLLBAC ...

  9. 关于main函数传参数的问题

    argc是命令行总的参数个数      argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数      命令行后面跟的用户输入的参数,比如:      int   main(int   ...

  10. Linux将文件拷到u盘

    1:终端中获取root后,使用fdisk -l来查看位置 2:挂载u盘:mount /路径 /mnt cd /mnt可进入u盘,ls可查看文件 3:复制:cp /(文件路径) /mnt 4:退出u盘: ...