1.JavaScript概念
JavaScript是一种基于原型的面向对象的语言。
因为JavaScript是脚本语言,而脚本语言又是一种解释性的语言,
所以JavaScript是逐行执行的同时也具有解释型语言的特点:不需要编译可以直接使用,由解释器来负责解释。
2.JavaScript特点
(1)面向对象
JavaScript 语言标准已经明确说明,JavaScript 是一门面向对象的语言;
JavaScript是否属于“面向对象的语言”一直饱受争议,一些争论中,有人强调,JavaScript 并非“面向对象的语言”,而是“基于对象的语言”,这个说法也一度流传甚广。JavaScript 的对象设计跟目前主流基于类的面向对象差异非常大。而这样的对象系统设计虽然特别,但是 JavaScript 提供了完全运行时的对象系统,这使得它可以模仿多数面向对象编程范式,所以它也是正统的面向对象语言。而因为与基于类的面向对象的差异,我们也称JavaScript 为基于原型的面向对象。
(2)脚本语言
又被称为动态语言,只在被调用时进行解释或编译。在程序的运行过程中逐行解释执行。
(3)解释性语言
不需要编译可以直接使用,由宿主环境(浏览器)解释执行。
我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我的并在后台私信我:前端,即可免费获取。
(4)事件驱动
JavaScript对用户的响应,是以事件驱动的方式进行的。在网页(Web Page)中执行了某种操作所产生的动作,被称为“事件”(Event)。例如按下鼠标、移动窗口、选择菜单等都可以被视为事件。当事件发生后,可能会引起相应的事件响应,执行某些对应的脚本,这种机制被称为“事件驱动”。
(5)动态性
语言的动态性,是指程序在运行时可以改变其结构。在一个 JavaScript 对象中,要为一个属性赋值时,我们不必事先创建一个变量,只需要在使用的时候做赋值操作即可。
(6)弱类型&松散类型
弱类型语言声明数据时不需要指定数据类型,一个变量可以赋不同数据类型的值,不同类型数据在计算过程中会自动进行转换,在参与运算的过程中,JavaScript会将其自动转换为数据类型,比如JavaScript中布尔类型的数据可以直接参与运算。
(7)单线程与异步处理共存
单线程程序的执行顺序是从上到下依次执行,一个程序中只可以执行一个程序。而异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成。二者看起来相互矛盾,不能够同时存在,可是JavaScript以一种巧妙地方式用单线程实现了异步处理的效果。
在JavaScript的主线程和任务队列中间还存在一个WebAPIs,这个WebAPIs是浏览器单独为处理JavaScript的异步任务开辟的线程。当主线程栈中的函数需要异步处理的时候,主线程会把需要异步的部分推给WebAPIs,这部分异步由浏览器去执行,执行完异步之后将处理后的结果以事件的形式丢到任务队列中,这个事件就是我们写代码时的“回调函数”。
(8)跨平台
JavaScript依赖于浏览器本身,与操作环境无关。
(9)安全性语言
JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。
3.javaScript的核心
JavaScript 的三大核心为ECMAScript、DOM 和 BOM。
ECMAScript(核心):
描述了该语言的语法和基本对象,ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,所以它可以理解为是JavaScript的一个标准,但实际上后两者是ECMA-262标准的实现和扩展。
DOM(文档对象模型):
描述了处理网页内容的方法和接口;是W3C组织推荐的处理可扩展置标语言的标准编程接口。是一种与平台和语言无关的应用程序接口(API),它可以动态地访问程序和脚本,更新其内容、结构和www文档的风格(目前,HTML和XML文档是通过说明部分定义的)。
BOM(浏览器对象模型):
描述了与浏览器进行交互的方法和接口;用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。
4.javaScript的使用
html页面中写在<script></script>标签内
引入外部.js文件
引入的多个js文件,会按顺序分开执行。同样的,对于不同<script>标签嵌入的JavaScript代码,也会根据脚本标签<script>的出现顺序来分开执行。由于JavaScript通常需要操作DOM,一般把JavaScript放在前或者文档结尾处引入。若需要在中引入,可以通过修改window.onload或者document.ready事件,强制等到DOM加载完成后再执行相关函数。
5.javaScript的执行顺序
JavaScript代码执行分为两个部分:
预编译阶段,进行代码的检查装载,同样也是按从上到下按顺序进行的。此阶段只进行变量和函数的声明,会跳过执行语句,不对变量进行赋值,变量的默认值为undefined。即使声明是在调用的下方进行的,但浏览器仍然先声明再调用(执行),这个现象叫做“声明提升”。即便一个函数的声明在函数调用的下方,前面仍然可以正常执行这个函数,需要注意的是函数声明的提升优先于变量声明的提升。(js代码的执行是读一行代码执行一行,但在执行之前系统会先对js进行全面扫描检查是否存在低级的语法错误,并不会立即执行语句。)