Javascript 是基于对象和事件驱动的并且具有安全性能的客户端解释型脚本语言。诞生于1995年,当时的目的是为了验证表单的输入。不需要在一个语言环境下运行,只需要支持它的浏览器即可。它的主要目的是验证发往服务器端的数据,增加 web 互动,加强用户体验度等。目前用的最普遍的是第三版。

1997 年,欧洲计算机制造商协会(ECMA)设置了 JavaScript 的标准,命名为 ECMAScript。ECMAScript 是 JavaScript的规格标准,JavaScript 是 ECMAScript 的一种实现。

一个完整的 JavaScript 应该由核心 ECMAScript,文档对象模型 DOM,浏览器对象模型 BOM 组成。

浏览器的 console 控制台也是一个 REPL 环境,可以直接输入 JS 表达式来执行。

javascript ecma javascript ecmascript_HTML

特点:

  • 解释型:不需要编译,浏览器直接逐行解释执行。代码错误,则页面中无效果。
  • 基于对象:内置大量现成对象,可以直接使用。
  • 事件驱动:可以以事件驱动的方式响应客户端的输入,无需经过服务端程序。
  • 安全性:不允许访问本地硬盘,不能将数据写到服务器上,不允许对网络文档进行修改和删除。
  • 跨平台:JS 依赖于浏览器本身,与操作系统无关。

静态类型语言和动态类型语言:

编写语言按照数据类型大体可以分为两类:一类是静态类型语言,另一类是动态类型语言。静态类型语言在编译时便已确定变量的类型;而动态类型语言的变量类型要到程序运行的时候,待变量被赋予某个值之后,才会具有某种类型。

静态类型语言的优点首先是在编译时就能发现类型不匹配的错误,编译器可以帮助我们提前避免程序在运行期间有可能发生的一些错误;其次,如果在程序中明确地规定了数据类型,编译器还可以针对这些信息对数据进行一些优化工作,提高程序执行速度。

静态类型语言的缺点首先是迫使程序员依照强契约来编写程序,为每个变量规定数据类型,归根结底只是辅助编写可靠性高程序的一种手段,而不是编写程序的目的,毕竟大部分人编写程序的目的是为了完成需求交付生产;其次,类型的声明也会增加更多的代码,在程序编写过程中,这些细节会让程序员的经历从思考业务逻辑上分散开来。

动态类型怨言的优点是编写的代码数量更少,看起来也更加简洁,程序员可以把经历更多地放在业务逻辑上面。虽然不区分类型在某些情况下回让程序变得难以理解,但整体而言,代码量越少,越专注于逻辑表达,对阅读程序是越有帮助的。

动态类型语言的缺点是无法保证变量的类型,从而在程序的运行时期才有可能发生跟类型相关的错误。

在 JavaScript 中,当对一个变量赋值时,显然不需要考虑它的类型,因此, JavaScript 是一门典型的动态类型语言。

插入 JS 代码:

<script></script>:用于在 HTML 页面中插入 JS。

属性:

  1. type:表示代码使用的脚本语言的内容类型。HTML5 中可省略。
  2. src:表示要执行代码的外部文件。可以加载跨域资源。
  3. defer:只适用于外部脚本。JS 脚本会立即在新的线程中单独下载,不会阻塞 HTML 的解析;但是脚本下载完成后,不会立即执行,会等待 HTML 解析完成之后,DOMContentLoaded 事件发出之前再执行。多个脚本会按照在 HTML 文档中的顺序依次执行。
  4. async:只适用于外部脚本。JS 脚本会立即在新的线程中单独下载,不会阻塞 HTML 的解析;但是脚本下载完成后,会立即执行,此时会阻塞 HTML 的解析。多个脚本的执行顺序无法确定。

当浏览器不支持或禁用 JS 时,可以在 <body> 的最前或最后:

<noscript> 本站必须启用javascript! </noscript>

插入 JS 代码的方式:
  1. 事件定义方式:
<input type=”button” value=”按钮” onclick=”alert('Hello');”>
  1. 嵌入式:在<head> 或者<body><script> 标签内部直接书写 JS 代码。
<head>
    <script>
  	   function method(){
  	      alert(“hello”);
  	 	}
	</script>
<head>
<body>
   <form>
      <input type=”button”  value=”按钮”  onclick=“method();”>
  </form>
</body>
  1. 文件调用方式:创建带有 .js 扩展名的外部 JS 文件;在 <head> 或者<body> 标签中使用 <script type=”text/javascript” src=”文件路径/文件名”></script> 引入。

.js 文件中,不需要包含 <script> 标签,直接书写 JS 代码。
<script></script>标签之间不应该再包含额外的 JS 代码,会被忽略。

将 JS 文件放在<head>元素中,意味着必须等到全部 JS 代码都被下载、解析和执行完毕之后,才能开始呈现页面的内容,所以一般把 JS 引用放在 <body> 元素的最后面。

文件调用方式具有维护性高,可缓存(加载一次,之后无需再加载),方便未来扩展的特点。

<script src=”http://ww.somewhere.com/afile.js>

注释:

注释的内容在代码执行过程中不起作用。

  1. 单行注释使用//开头,在//后面的内容即为注释内容。
  2. 多行注释以/*开头,以*/结尾,在两者之间的内容即为注释内容。

标识符:

由不以数字开头的字母,数字,下划线,美元符号组成,不能使用关键字或保留字,区分大小写,常用于表示变量、函数等名称。

关键字:

JS 语言中代表特定含义的,已经开始使用的字符。

保留字:

目前在 JS 中还没有特定用途,但很有可能将来被用作关键字。