JS考核总结

BOM:

指的是浏览器对象模型,它指的是把浏览器当做一个对象来对待,这个对象主要定义了与浏览器进行交互的方法和接口。BOM 的核心是 window,而 window 对象具有双重角色,它既是通过 JavaScript 访问浏览器窗口的一个接口,又是一个 Global(全局) 对象。这意味着在网页中定义的任何对象,变量和函数,都作为全局对象的一个属性或者方法存在。window 对象含有 location 对象、navigator 对象、screen 对象等子对象,并且 DOM 的最根本的对象 document 对象也是 BOM 的 window 对 象的子对象。

JS的加载过程:

JS加载时,首先会优先加载function,但仅限于function xxx(){}这种声明方式的,像var b = function(){};又或者匿名函数等是不会优先加载的(注意匿名函数是什么时候用,什么时候加载,和懒加载有得一拼),这是第一步。其次会加载script元素,按照script中的标签从上往下执行,当遇到错误时会返回,结束当前标签的执行,执行下一个script。

JavaScript的三大组成部分是:

1、ECMAScript:JavaScript的核心,描述了语言的基本语法(var、for、if、array等)和数据类型(数字、字符串、布尔、函数、对象(obj、[]、{}、null)、未定义),ECMAScript是一套标准,定义了一种语言(比如JS)是什么样子。

2、文档对象模型(DOM):DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:

 

    Sample Page

 

 

   

hello world!

 

这段代码可以用 DOM 绘制成一个节点层次图:


DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点(getElementById、childNodes、appendChild、 innerHTML)。

3、浏览器对象模型(BOM)对浏览器窗口进行访问和操作。例如弹出新的浏览器窗口,移动、改变和关闭浏览器窗口,提供详细的网络浏览器信息(navigator object),详细的页面信息(location object),详细的用户屏幕分辨率的信息(screen object),对cookies的支持等等。BOM作为JavaScript的一部分并没有相关标准的支持,每一个浏览器都有自己的实现,虽然有一些非事实的标准,但还是给开发者带来一定的麻烦。

数据类型:

JS分两种数据类型:

基本数据类型:**Number、String、Boolean、Null、 Undefined、Symbol(ES6),**这些类型可以直接操作保存在变量中的实际值。

引用数据类型:Object(在JS中除了基本数据类型以外的都是对象,数据是对象,函数是对象,正则表达式是对象)

JS数据结构:树:

树(tree)形结构是一种重要的非线性结构,依据分支关系定义的层次结构,在这种结构中,每个元素至多只有一个前趋,但可以有多个后继。

树的定义:树(Tree)是n(n 大于等于0)个节点的有限集合T,当n=0时称为空树,否则,称为非空树。

常用的树形表示方法有: 1。集合嵌套法2.凹入表表示法



.广义表表示法

(A(B(E(k),F),C(G),D(H,I,J))

4.树形表示法 (最常见的表示法)


树的基本术语:

节点:就是指树中的元素

子节点: 树中一个节点的 直属下级节点

父节点: 当前节点的前趋节点

祖先节点:当前节点的前趋节点(非父节点)

子孙节点:当前结点的下属节点(非直接下属节点)

叶子节点:没有子节点的节点元素

节点的层次:根节点是第一层节点,表示节点的所属的层数

深度:树的层数,表示树的深度

森林: n棵互不相交的树的集合

同步和异步

为解决JS单线程问题,利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许 JS 脚本创建多个线程。于是出现了同步和异步。

同步

前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。

同步任务

同步任务都在主线程上执行,形成一个执行栈

2. 异步

在做一件事的时,因为这件事会花费很长时间,在做这件事的同时,还可以去处理其他事情。

异步任务

异步任务不进入主线程,而是进入“任务队列”(task queue)的任务,只有“任务队列”通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行

异步任务:JS 的异步是通过回调函数实现的

一般有以下三种类型:

普通事件,如 click、resize 等

资源加载,如 load、error 等

定时器,包括 setInterval、setTimeout等

异步任务相关的回调函数添加到重新创建的一个任务队列中(任务队列也成为消息队列)

当有多个回调函数时,利用“异步进程处理”

例:有一个点击的回调函数document.onclick=fn();

先把 fn() 提交到“异步进程处理”中,“异步进程处理”来决定要不要把它写到“任务队列”中,只有点击了鼠标,即执行了 fn() ,“异步进程处理”才会把它放到“任务队列”中

例:有一个定时器函数

也是先将回调函数提交到“异步进程处理”中,等时间到了之后,再将其放到“任务队列”中

3.两者的本质区别

这条流水线上各个流程的执行顺序不同

定时器的函数类型:

1.回调函数,该函数会每隔一段时间被调用一次

2.每次调用间隔的时间,单位是毫秒

返回值:

返回一个Number类型的数据

这个数字用来作为定时器的唯一标识

clearInterval()

可以用来关闭一个定时器

JS之回调函数

回调函数

回调函数被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。

一个简单的例子

使用场合

js代码在执行时从上而下执行,当我们需要一个操作执行完成后再执行下一个操作,这时候就需要用到回调函数。

我的使用情况

for(var i=0;i < dlList.length;i++){

dlList[i].index = i;

(function(){

// 获取当前dl下的所有dd

var ddList = dlList[i].getElementsByTagName('dd');

// 遍历当前dd

for(var j=0;j < ddList.length;j++){

// ddList[j].style.color = '#666';

// 为每一个dd绑定单击响应函数

ddList[j].onclick = function(){

// 高亮切换 清除高亮,将当前的这一组dd颜色设置为#666

for(var i=0;i

ddList[i].style.color = '#666';

// console.log('点击');

}

//将当前点击的这个dd(this)颜色设置为红色

this.style.color ='red';

}

}

})();

}

JavaScript中的伪数组

1.什么是伪数组

JavaScript中存在有一种类数组,或者说伪数组。经常见到的伪数组有函数的arguments对象、dom.querySelectorAll等获取的NodeList类(NodeList本身具有forEach方法)等。

你可能感兴趣的:(JS考核总结)