JavaScript基础知识梳理
什么是JavaScript
1.介绍
JavaScript一种轻量级的脚本语言,也是一种嵌入式(embedded)语言,是一种 对象模型 语言,简称 JS ;JavaScript 的核心语法部分相当精简,也就是语言本身,只包括两个部分:基本的语法构造(比如操作符、控制结构、语句)和标准库(就是一系列具有各种功能的对象比如Array、Date、Math等)。想要实现其他复杂的操作和效果,都要依靠宿主环境提供API,目前,已经嵌入 JavaScript 的宿主环境有多种,最常见的环境就是 浏览器,另外还有服务器环境(操作系统);
JavaScript被认为是客户端“脚本”,它不常叫“语言”,言外之意是比较简单,但是深入了解之后,你会发现,简单的外表下,蕴藏着丰富的内涵。
2.ECMAScript和JavaScript
ECMA是一个组织,是欧洲计算机协会。是它制定了JavaScript的标准。
ECMAScript简称ES,比如ES5就表示ECMAScript5版本,ES6就表示ECMAScript6版本。JavaScript简称JS,JS的版本随ECMAScript的版本变化而变化。
ECMAScript只是JavaScript的核心,我们现在学习的JavaScript包括JS的核心ECMAScript,并且还包含DOM和BOM。
3.JS的强大之处
1 数据验证(表单验证)
2网页特效(目前大多数的网页特效都是通过JS编写)
3编写网页小游戏
4服务器端编程,数据交互(Ajax、Node.js)
语言基础
1.代码位置
JS代码要写到一对script标签中。
2.输出
介绍3种输出方式:
1、document.write(输出的内容); //这种输出的内容会显示在浏览器页面上
2、alert(输出的内容); //这种方法输出的内容会以提示框的形式显示
3、console.log(输出的内容); //输出的内容会显示在浏览器的控制台。推荐使用。
3.语言与表达式
JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。
变量
1.什么是变量
变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据
1.1为什么要使用变量
使用变量可以方便的获取或者修改内存中的数据
2.如何使用变量
1.var 声明变量
2.变量的赋值
3.同时声明多个变量
4.同时声明多个变量并赋值
3.变量在内存中的形式
4.变量的命名规则和规范
5、只声明变量没有赋初值
6.变量提升(hoisting)
常量
1.定义常量
JS中定义常量,只有const语法。
const A = 123;
consolg.log(A);//打印123
2.常量作用域
常量作用域是常量所在的块,常量不可变量提升且不可修改。
字符串运算符
JS中用 加号(+)连接两个字符串。
如果使用+的是两个数字则表示加法运算;如果使用+的有一方是字符串则表示字符串连接。
#条件(三元)运算符
元表示参与运算的参数个数。三元意思就是参与运算的有三个值。
var a= (b>c)?x:y;
给a赋值,值可能是x,也可能是y。关键取决于b是否大于c。如果b大于c,则将x赋值给a;反之y赋值给a。
数组
1.声明数组
在JS中,数组也是一种特殊的对象。
三种声明方式:
1.var arr=[‘hello’,‘word’];
2.var arr = new Array(‘hello’,‘wprd’);
3.var arr = new Array(3)表示数组有三个单元
1.1 获取数组元素
使用数组[下标]可以获取到数组中的值。JS中数组的下标一定是数字类型。
1.2判断下标是否存在
使用in来判断下标是否存在
语法:下标 in 数组 如果存在返回true,不存在返回false。
数据类型
JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值)字符串,数值,布尔值,null,undefined,object,Symbol。
判断数据类型
使用typeof无法区分null、数组、对象,想要区分它们三个,必须使用instanceof。
变量 instanceof 类型
如果返回true则属于该类型,反之不属于改类型。
原始类型和引用类型
引用类型指对象,指的是狭义上的对象。数组不应该算引用类型。
区分是否是引用类型,关键看内存图。
对象在内存的栈区只保存它的地址,在堆区保存它的实际内容,这种类型的变量就是引用类型。
数据类型转换
转换成字符串
使用字符串方法toString([进制])转换,但是null和undefined无法转换。
使用顶层函数String()可以将任何数据类型转换成字符串,包括null和undefined。
在其他数据类型和字符串类型进行连接(+操作)操作时,会自动对其他数据类型使用String()强制转换成字符串,然后在相加(连)
将其他数据类型的值转换成字符串,可以使用toString(),也可以使用String()。区别在于String可以转换任何类型的值为字符串,toString()不能转换undefined和null。区别二是语法不同。
使用语法:
使用toString() : 待转换的变量.toString();
使用String() : String(待转换的变量);
隐式转换:在其他数据类型和字符串类型进行连接(+操作)操作时,会自动对其他数据类型使用String()强制转换成字符串,然后在相加(连)。
函数
定义与调用
function 函数名(参数){
//函数体
//return xxx;
}
函数表达式
var a = function(参数){//函数体}
函数预加载
函数预加载指定是在同一个script代码段中,由“function xxx(){}”这种方式定义的函数,可以先调用函数,再声明函数。
作用域
作用域分类
作用域指的是变量起作用的范围。
分为全局作用域和局部作用域。其中局部作用域也叫做函数作用域。
作用域规则
规则一:函数可以使用函数以外的变量
规则二:函数内部,优先使用函数内部的变量
函数内部也会发生变量提升
规则三:函数内部没有用var 声明的变量,也是全局变量
作用域链
在内部函数中查找变量的时候,优先从函数内部自身查找,如果没有查到,则向外层查找,如果外层还没有,则继续向上一层查找,一直查询到全局作用域。这种链式的查找方式就是作用域链。
DOM介绍
什么是DOM
DOM全称是Document Object Model(文档对象模型),它是JS将HTML按文档结构和内容层次抽象出的模型,使得JavaScript有了访问HTML的能力,能够实现对HTML中内容的操作。
节点与DOM模型
DOM模型呈现树状结构,因此也叫“树模型”,树中的内容(标签、属性、文本)称为“节点”,节点在dom中就是对象。包含有元素节点(标签)、属性节点、文本节点。dom模型中,每个节点,都是一个JavaScript对象。
根据W3C的HTML DOM 标准,HTML文档中的所有内容都是节点:
整个文档是一个文档节点,用document对象表示,最大的节点
每个HTML元素是元素节点,比如html、head、body、a、h1
HTML元素内的文本是文本节点
每个HTML属性是属性节点比如:href
注释是注释节点
节点之间的关系
节点之间的关系犹如人类家族中的族谱。节点之间的关系包括:
父子关系(父子、后代、祖先级)
兄弟(姐妹)关系
#元素(标签)节点查询操作
根据document对象查询
document是JS内置的一个对象,表示整个HTML文档。根据document查询,意思就是在整个文档范围内查询。