JavaScript脚本语言是什么_动力节点Java学院整理


Posted in Javascript onJune 26, 2017

JavaScript,也称ECMAScript,是一种基于对象和事件驱动并具有相对安全性并广泛用于客户端网页开发的脚本语言,同时也是一种广泛用于客户端Web开发的脚本语言。

最早是在HTML上使用的,用来给HTML网页添加动态功能,由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题及响应用户的各种操作,为客户提供更流畅的浏览效果。因为当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。然而现在JavaScript也可被用于网络服务器,如Node.js。

一、javascript的组成

一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

JavaScript脚本语言是什么_动力节点Java学院整理

ECMAScript:描述了该语言的语法和基本对象;
文档对象模型(Document Object Model,简称DOM)):描述处理网页内容的方法和接口;
浏览器对象模型(Browser Object Model,简称BOM)):描述与浏览器进行交互的方法和接口。

二、javascript的基本特点

是一种解释性脚本语言(代码不进行预编译)。
主要用来向 HTML 页面添加交互行为。
可以直接嵌入 HTML 页面,但写成单独的js文件有利于结构和行为的分离。

三、javascript的特性

不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。

而随着服务器的强壮,虽然现在的程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖Javascript在客户端进行支持。随着引擎如V8和框架如Node.js的发展,及其事件驱动及异步IO等特性,JavaScript逐渐被用来编写服务器端程序。

四、JavaScript的发展历史背景

1、Nombas和ScriptEase

大概在1992年,一家称作Nombas的公司开发了一种叫做C 减减(C-minus-minus,简称 Cmm)的嵌入式脚本语言。Cmm 背后的理念很简单:一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与 C (和 C ++)足够的相似性,以便开发人员能很快学会。这个脚本语言捆绑在一个叫做 CEnvi 的共享软件中,它首次向开发人员展示了这种语言的威力。
Nombas 最终把 Cmm 的名字改成了 ScriptEase,原因是后面的部分(mm)听起来过于消极,同时字母 C “令人害怕”。
现在 ScriptEase 已经成为了 Nombas 产品背后的主要驱动力。

2、Netscape发明了JavaScript

当 Netscape Navigator 崭露头角时,Nombas 开发了一个可以嵌入网页中的 CEnvi 的版本。这些早期的试验被称为 Espresso Page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端语言。而 Nombas 丝毫没有料到它的理念将会成为万维网的一块重要基石。

当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。此时,大部分因特网用户还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次地往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写一个必要的字段。

那时正处于技术革新最前沿的 Netscape,开始认真考虑开发一种客户端脚本语言来解决简单的处理问题。

当时工作于Netscape的Brendan Eich,开始着手为即将在 1995 年发行的 Netscape Navigator 2.0 开发一个称之为 LiveScript 的脚本语言,当时的目的是在浏览器和服务器(本来要叫它 LiveWire)端使用它。Netscape 与 Sun 及时完成 LiveScript 实现。

就在 Netscape Navigator 2.0 即将正式发布前,Netscape 将其更名为JavaScript。虽然Netscape在最初将其脚本语言命名为LiveScript,后来Netscape在与Sun合作之后将其改名为JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”,因此语法上有类似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自Self和Scheme。

JavaScript与Java名称上的近似,是当时网景为了营销考虑与太阳微系统达成协议的结果。为了取得技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)创建了ECMA-262标准(ECMAScript)。现在两者都属于ECMAScript的实现。尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是JavaScript具有非常丰富的特性。JavaScript 从此变成了因特网的必备组件。

3、三足鼎立

因为 JavaScript 1.0 如此成功,Netscape 在 Netscape Navigator 3.0 中发布了 1.1 版。恰巧那个时候,微软决定进军浏览器,发布了 IE 3.0 并搭载了一个 JavaScript 的克隆版,叫做 JScript(这样命名是为了避免与 Netscape 潜在的许可纠纷)。微软步入 Web 浏览器领域的这重要一步虽然令其声名狼藉,但也成为 JavaScript 语言发展过程中的重要一步。

在微软进入后,有3种不同的 JavaScript 版本同时存在:Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript 以及 CEnvi 中的 ScriptEase。与 C 和其他编程语言不同的是,JavaScript 并没有一个标准来统一其语法或特性,而这 3 种不同的版本恰恰突出了这个问题。随着业界担心的增加,这个语言的标准化显然已经势在必行。

4、标准化

1997年,JavaScript 1.1 作为一个草案提交给欧洲计算机制造商协会(ECMA)。第39技术委员会(TC39)被委派来“标准化一个通用、跨平台、中立于厂商的脚本语言的语法和语义”。由来自 Netscape、Sun、微软、Borland 和其他一些对脚本编程感兴趣的公司的程序员组成的 TC39 锤炼出了 ECMA-262,该标准定义了名为 ECMAScript 的全新脚本语言。

目前符合 ECMA-262 3rd Edition 标准的实现有:

       Microsoft 公司的 JScript

Mozilla 的 JavaScript-C(C语言实现),现名 SpiderMonkey

Mozilla 的 Rhino(Java 实现)

Digital Mars 公司的 DMDScript

Google 公司的 V8

在接下来的几年里,国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。

五、JavaScript常用来完成以下任务
1、嵌入动态文本于HTML页面
2、对浏览器事件作出响应
3、读写HTML元素
4、在数据被提交到服务器之前验证数据
5、检测访客的浏览器信息
6、控制cookies,包括创建和修改等

六、Javascript的使用方式

Javascript加入网页有两种方法:直接方式和引用方式。
1、直接方式

这是最常用的方法,大部分含有Javascript的网页都采用这种方法,例如:

<html>
    <head>
   <title>简单的JavaScript Hello World</title>
    <script type="text/javascript">
      document.write("Hello, 动力节点!");  // 在浏览器视窗内直接显示
      alert("Hello, 动力节点!");      // 弹窗显示
      console.log("Hello, 动力节点!");   // 在控制台(console)里显示,需要先开启开发工具控制台
    </script>
   </head>
   <body>
HTML页面内容……
   </body>

</html>

在这个例子中,我们可看到一个新的标签:<script>……</script>,而<script language="Javascript"> 用来告诉浏览器这是用Javascript编写的程序,需要调动相应的解释程序进行解释。(w3c已经建议使用新的标准:<script type="application/javascript">)

注意在非xhtml文档中插入script标签时,如果不是引用外部文件,应该在script内加上cdata声明,避免大于和小于运算符引起的浏览器解析错误

2、引用方式

如果已经存在一个Javascript源文件(通常以js为扩展名),则可以采用这种引用的方式,以提高程序代码的利用率。其基本格式如下:

<script src=“url” type="text/javascript"></script>

其中的Url就是程序文件的地址。同样的,这样的语句可以放在HTML文档头部或主体的任何部分。如果要实现“直接插入方式”中所举例子的效果,可以首先创建一个Javascript源代码文件“Script.js”,其内容如下:

document.write("这是Javascript!采用直接插入的方法!");

在网页中可以这样调用程序:<script src="Script.js" type="text/javascript"></script> 。
也可以同时在导入文件时制定javascript的版本,例如:<script src="Script.js" type="text/javascript; version=1.8"></script>

注意:凡是指定了src属性的script标签里的内容都会被忽略。

七、JavaScript与Java的区别
很多人看到Java和JavaScript都有“Java”四个字,就以为它们是同一样东西,连我自己当初也是这样。事实上,JAVA语言和JavaScript语言是相关的,但是它们的联系并非你想像的那样紧密。首先Java语言是SUN Microsystems公司的产品,而JavaScript是Netscape公司的产品。

其次它们在功能上也有些差异:Java在客户端的运行的应用程序叫做Java Applet,是嵌在网页中,而又有自己独立的运行窗口的小程序。Java Applet 是预先编译好的,一个Applet 文件(.class)用Notepad 打开阅读,根本不能理解。Java Applet 的功能很强大,可以访问http、ftp等协议,甚至可以在电脑上种病毒(已有先例了)。

相比之下,JavaScript 的能力就比较小了。JavaScript 是一种“脚本”(“Script”),它直接把代码写到HTML 文档中,浏览器读取它们的时候才进行编译、执行,所以能查看HTML 源文件就能查看JavaScript 源代码。JavaScript 没有独立的运行窗口,浏览器当前窗口就是它的运行窗口。它们的相同点,我想只有同是以Java 作编程语言一点了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 跨域访问问题解决方法
Dec 02 Javascript
让table变成exls的示例代码
Mar 24 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
Oct 22 Javascript
极易被忽视的javascript面试题七问七答
Feb 15 Javascript
jQuery EasyUI常用数据验证汇总
Sep 18 Javascript
微信小程序ibeacon三点定位详解
Oct 31 Javascript
详解vue 图片上传功能
Apr 30 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
Nov 25 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 Javascript
JavaScript简介_动力节点Java学院整理
Jun 26 #Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 #Javascript
Angular 表单控件示例代码
Jun 26 #Javascript
jQuery实现一个简单的验证码功能
Jun 26 #jQuery
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 #jQuery
JavaScript实现三级联动菜单实例代码
Jun 26 #Javascript
jQuery实现frame之间互通的方法
Jun 26 #jQuery
You might like
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
使用PHP编写发红包程序
2015/07/22 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
深入理解Django的自定义过滤器
2017/10/17 Python
python语言的优势是什么
2020/06/17 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
会计应届生的自荐信
2013/12/13 职场文书
生产部主管岗位职责
2014/01/06 职场文书
咖啡店创业计划书
2014/08/15 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
python基础入门之字典和集合
2021/06/13 Python
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android