JavaScript基础
更新日志:
2021.9.17:根据狂神说的视频整理出该笔记
2022.4.21:由于学校前端选修课要考试了,根据教学ppt做了一些修订和补充
JavaScript基础
简介
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。被广泛应用于各种客户端Web程序尤其是HTML开发中,能给HTML网页添加动态功能,响应用户各种操作,实现诸如欢迎信息、数字日历、跑马灯,显示浏览器停留时间等特殊效果,提高网页的可观性。决定WEB页面的行为,具有客户端数据验证、用户交互等功能
1. JavaScript放置
1 |
|
JavaScript代码放置有4种情形:
- 头部;
- 主体;
- 单独的js文件;
- 直接在事件处理代码中。
1 |
|
JavaScript程序本身不能独立存在,它是依附于某个HTML页面,在浏览器端运行的。
2. 消息对话框
JavaScript中的消息对话框分为告警框、确认框和提示框。
警告框
alert (message)
1 |
|
确认框
confirm (message)
1 |
|
提示框
prompt (text, defaultText)
1 |
|
3. 命令规范
标识符
标识符是计算机语言中用来表示变量名、函数名等的有效字符序列,简单来说,标识符就是一个名字,JavaScript关于标识符的规定如下:
-
必须使用字母或者下划线开始。
-
必须使用英文字母、数字、下划线组成,不能出现空格或制表符。
-
不能使用JavaScript关键字与JavaScript保留字。
-
不能使用JavaScript语言内部的单词,比如Infinity,NaN,undefined等。
-
大小写敏感,如name和Name是不同的两个标识符。
关键字
关键字是JavaScript中已经被赋予特定意义的一些单词,关键字不能作为标识符来使用。
JavaScript的关键字 | ||||
---|---|---|---|---|
break | case | catch | continue | default |
delete | do | else | finally | for |
function | if | in | instanceof | new |
return | switch | this | throw | try |
typeof | var | void | while | with |
JavaScript的保留字 | ||||
---|---|---|---|---|
abstract | boolean | byte | char | class |
const | debugger | double | enum | export |
extends | final | float | goto | implements |
import | int | interface | long | native |
package | private | protected | public | short |
static | super | synchronized | throws | transient |
volatile |
4. 数据类型
所有的变量直接使用var声明就行 如 var a = 1; 输出是console.log();
js不区分小数和整数
1 |
|
这里就是多了NaN (not a number类型和Infinity 无限大的类型, 再说一下比较运算符有点不一样
比较运算符
- = 赋值
- == 等于(类型不一样,值一样,也会判断为true)
- === 绝对等于(类型一样,值一样,结果为true)
- NaN===NaN 这个于所有的之都不相等,包括自己
- 只能通过isNaN(NaN)来判断是不是NaN
- 还有就是老生长谈的精度问题,不要直接比较浮点数
1 |
|
5. 数组
基本和Java类似,不详谈,不一样的就是什么类型都可以装,有点像集合
1 |
|
数组越界会undefined
同时数组还有一些方法如sort(),reverse(),concat();都是 数组名.方法名();
来调用,就是多了一个join连接符
1 |
|
多维数组
1 |
|
6. 对象
js是一个面向对象的语言,因此也有对象这个概念
声明一个对象
1 |
|
- 这里注意,对象是大括号,数组是中括号.而且对象的前几个属性使用逗号隔 ( , ) 开,最后一个不用符号
- 调用的话直接person.age 就行了
在< script > 标签里第一句写上 'use strict’就行
这样局部变量就只能使用let声明 (局部变量推荐使用let声明)
7. 字符串
和Java类似,不同的多了一个多行字符串的编写
1 |
|
这个符号声明的符号就是tab键上面的那个键
字符串是不可以变的,就像是Java里的String一样
8. 流程控制
for-in循环
语法
1 |
|
感觉就是for-each循环,这里的变量可以是数组元素,也可以是对象的属性
例如
1 |
|
9. map和set集合
和Java没啥区别
map集合
1 |
|
set集合
set: 无序不重复的集合
1 |
|
遍历
同时遍历的方法多了个for-of循环…就是把 in 改成了 of 然后没有啥区别
1 |
|
10. 函数来一点点
函数相关
- JavaScript函数分为系统内部函数和系统对象定义的函数及用户自定义函数。
- 函数就是完成一个特定的功能的程序代码。函数只需要定义一次,可以多次使用,从而提高程序代码的复用率,既减轻开发人员的负担,以降低了代码的重复度。
- 函数需要先定义后使用,JavaScript函数一般定义在HTML文件的头部head标记或外部JS文件中,而函数的调用可以在HTML文件的主体body标记中任何位置。
- 常用系统内部函数又称为内部函数(内部方法),与任何对象无关,可以直接使用。
基本语法
function 函数名(参数1, 参数2, … 参数N) {函数体;}
语法说明:
-
可以没有参数,但括号必须保留、以及包含在大括号内的由若干条语句构成的函数体。
-
不能在其他语句或其自身中嵌套function语句,也就是说,每个函数声明都是独立的。
-
函数名(参数),形参是用来接收函数调用者传递过来的实参。
-
调用实参与形参要一一对应,主要表现在类型、顺序、数量、内容要一致。
定义函数
1 |
|
调用
1 |
|
ES6引入的新特性
rest类似于Java中的可变参数
ES6引入的新特性,获取除了已经定义的参数之外的所有参数,ES6新特性中还可以使用const定义常量
1 |
|
rest参数只能写在最后面,且必须使用…标示
11. 方法
定义一个方法
1 |
|
12. date对象的使用
1 |
|
13. 初识Json
这里只是简单的了解一下json,后面我会出专门的json篇
简单的三点
- 对象都使用{}
- 数组都使用[]
- 所有的键值对都是用key:value
来一点代码理解
1 |
|
关于js和Json的区别
1 |
|
14. 原型
相当于Java中的继承
1 |
|
小明的原型是student 然后就可以使用student的方法了.在这里student也是一个对象
原型链:不深入了解
15. 操作BOM对象
javascript由三部分组成
-
核心:描述了javascript的语法和基本对象。
-
文档对象模型(DOM):是处理网页内容的方法和接口,是HTML和xml的应用程序接口(API)。
-
浏览器对象模型(BOM):各个浏览器厂商根据DOM在各个浏览器上的实现。
bom对象就是浏览器的对象模型,核心是对window的操作,主要针对浏览器窗口交互,BOM包含了DOM
window对象
代表浏览器窗口
页面跳转和重定向
1 |
|
Navigator对象
封装了浏览器的信息(大多数时候不会使用这个对象,因为会被认为的修改
所以不建议使用这些属性来判断和编写代码
)
screen对象
screen.width 获取屏幕的宽度
screen.height 获取长度
location
代表当前页面的URL信息
1 |
|
document
-
document对象是客户端JavaScript最为常用的对象之一,在浏览器对象模型中,它位于window对象的下一层级。
-
document对象包含一些简单的属性,提供了有关浏览器中显示文档的相关信息,例如:该文档的URL、字体颜色,修改日期等。
-
document对象还包含一些引用数组的属性,这些属性可以代表文档中的表单、图象、链接、锚以及applet。
-
同其他对象一样,document对象还定义了一系列的方法,通过这些方法,可以使JavaScript在解析文档时动态地将HTML文本添加到文档中。
获取具体的文档树结点
1 |
|
getElementById
-
通过getElementById方法可以快速访问某个HTML元素,而不必通过DOM层层遍历。
-
使用getElementById方法时如果元素的ID不是唯一的,那么会获得第一个符合条件的元素。
getElementsByName
- getElementsByName方法用于返回HTML元素中指定name属性的元素数组 ,而且仅用于像input,radio,checkbox等表单元素对象。
getElementsByTagName
-
getElementsByTagName方法返回指定HTML标记名的元素数组
-
通过遍历这个数组获得每一个单独的子元素
定义多个P标记元素,通过getElementsByTagName(“p”)方法选中HTML标记是
的元素,返回是一个对象数组,可以通过下标访问这个数组。
appendChild
appendChild方法向当前节点对象追加节点,经常用于给页面动态的添加内容。
removeChild
removeChild方法是删除当前节点下的某个子节点,并返回被删除的节点。
其他方法
-
cloneNode();
-
replaceChild(newChild,oldChild);
-
inserBefore(newElement,targeElement);
获取cookie
例如: document.cookie
1 |
|
1 |
|
获取页面标题
1 |
|
-
通过getElementById方法可以快速访问某个HTML元素,而不必通过DOM层层遍历。
-
使用getElementById方法时如果元素的ID不是唯一的,那么会获得第一个符合条件的元素。
-
getElementsByName方法用于返回HTML元素中指定name属性的元素数组。而且仅用于像input,radio,checkbox等表单元素对象
history
1 |
|
16. 操作DOM对象节点
DOM简介
DOM是一个发展中的标准,它指定了JavaScript等脚本语言访问和操作HTML或者XML文档各个结构的方法,随着技术的发展和需求的变化,DOM中的对象、属性和方法也在不断地变化
•元素节点 (Element Node ),元素节点构成了DOM基础。在文档结构中,<html>,<head>、<body>、<h1>、<p>,<ul>
等标签都是元素节点。
•文本节点(Text Node),文本节点包含在元素节点内,如h1、p、li等节点就可以包含一些文本节点。
•属性节点(Attribute Node),属性节点总是被包含在元素节点当中,可以通过元素节点对象调用getAttribute( )方法来获取属性节点。
DOM应用实例
方法名 | 说明 |
---|---|
createElement(tagname) | 创建标记名为tagname的结点 |
createTextNode(text) | 创建包含文本text的文本结点 |
creatDocumentFragment() | 创建文档碎片 |
removeChild(node) | 删除一个名为node的子节点 |
appendChild(node) | 添加一个名为node的子节点 |
insertBefore(node B ,node A) | 在名为nodeA节点前插入一个名为nodeB的节点 |
replaceChild(node B ,node A) | 用一个名为nodeB节点替换另一个名为nodeA节点 |
cloneNode(boolean) | 克隆一个节点,它接收一个boolean参数,为true时表示该节点带文字;false表示该节点不带文字 |
更新节点
在DOM中有两个很重要的属性,这两个属性分别是innerText和innerHTML,通过这两个属性,可以更方便的进行文档操作。
在DOM中,如果需要动态地获取及设置节点属性的话,可以通过getAttribute( )方法setAttribute( )方法来处理
先获取一个节点,然后进行相应的操作
1 |
|
删除节点
需要通过父节点来删除子节点
1 |
|
插入节点
1. 追加
可以通过append方法来追加
1 |
|
2. 通过js创建一个新的节点
1 |
|
插入到前面
1 |
|
3. 通过函数
1 |
|
4. 操作css
1 |
|