JavaScript 简介

174 阅读5分钟

JavaScript 简介

tai-xiaodong 2022.1.18 饥人谷

  • 布兰登·艾奇(Brendan Eich)是JavaScript的发明人,他1995年在网景公司任职时,为网景浏览器开发出JavaScript。 之后成为了浏览器上应用最广泛的脚本语言,因为网景公司和Sun公司合作,所以取名为JavaScript。
  • 同时他还是Mozilla基金会和火狐浏览器的创始人
  • JavaScript的标准为ECMASCript标准,同时JavaScript也可以用于其他场合。

主要功能

  1. 嵌入动态文本于HTML页面。
  2. 对浏览器事件做出响应。
  3. 读写HTML元素。
  4. 在数据被提交到服务器之前验证数据。
  5. 检测访客的浏览器信息。 控制cookies,包括创建和修改等。
  6. 基于Node.js技术进行服务器端编程。

构成

  1. ECMAScript,描述了该语言的语法和基本对象。
  2. 文档对象模型(DOM),描述处理网页内容的方法和接口。
  3. 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

运行模式

   JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
  1. 是一种解释性脚本语言(代码不进行预编译)。
  2. 主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
  3. 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
  4. 跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
  5. JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。 JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理

特点

  1. 是一种解释型的脚本语言。
  2. 基于对象。
  3. 语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,设计简单紧凑。
  4. 动态性,事件驱动的脚本语言。
  5. 跨平台性,不依赖于操作系统,仅需要浏览器的支持。

设计思路

为了应付公司的任务,布兰登仅用10太难就设计出了JavaScript,由于设计时间太短,语言的一些细节考录的不够严谨。 总体思路为:

  1. 借鉴C语言的基本语法。
  2. 借鉴Java语言的数据类型和内存管理。
  3. 借鉴Scheme语言,提升函数地位。
  4. 借鉴Self语言,使用基于原型的继承机制。
所以JavaScript是两种语言风格混合的产物:(简化的)函数式编程+(简化的)面向对象编程。

JavaScript的设计缺陷

  1. 不适合开发大型程序
Javascript没有名称空间(namespace),很难模块化;没有如何将代码分布在多个文件的规范;
允许同名函数的重复定义,后面的定义可以覆盖前面的定义,很不利于模块化加载。
  1. 非常小的标准库
Javascript提供的标准函数库非常小,只能完成一些基本操作,很多功能都不具备。
  1. null和undefined
null属于对象(object)的一种,意思是该对象为空;undefined则是一种数据类型,表示未定义,易混淆
  1. 全局变量难以控制
Javascript的全局变量,在所有模块中都是可见的;任何一个函数内部都可以生成全局变量,这大大加剧了程序的复杂性。
  1. 自动插入行尾分号
Javascript的所有语句,都必须以分号结尾。但是,如果你忘记加分号,解释器并不报错,而是为你自动加上分号。有时候,这会导致一些难以发现的错误。
  1. 加号运算符
+号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接。
  1. NaN
NaN是一种数字,表示超出了解释器的极限。它有一些很奇怪的特性
  1. 数组和对象的区分
由于Javascript的数组也属于对象(object),所以要区分一个对象到底是不是数组,相当麻烦。
  1. ==和===
==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。
  1. 基本类型的包装对象
Javascript有三种基本数据类型:字符串、数字和布尔值。它们都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象。
与基本数据类型对应的对象类型,作用很小,造成的混淆却很大

后记

本篇文章内容引用了 阮一峰的博客 以及百度百科关于JavaScript的介绍