JavaScript
概念
什么是JavaScript?
一般称为JS。是网景公司开发的一款在浏览器端解释执行的脚本语言。需要嵌入到HTML文件当中才能运行。
其主要作用:- 数据校验【对表单中用户填写的数据,做合法性验证】
- 操作网页,实现一些动态效果。【产生事件的交互】
- 访问浏览器,获取一些浏览器的数据。【版本、类型…】
特点
- JS是弱类型语言—类C语言。【数据的类型不是在编译器确定的,而是在运行期确定。】
- JS可以保存在.js文件中,也可以直接写在.html文件中。(与CSS相同)
- JS是基于对象的,不是纯粹的面向对象。
组成
- ECMA规范
一种脚本语言的开发规范,最初的时候命名为Mocha。后来根据版本迭代改名为ECMA。 - DOM
文档对象模型【将元素对象化】
比如:<input type="text" name="" value="" class="" id=""/>
将input对象化,然后.属性名的方式操作其属性值 - BOM
浏览器对象模型【浏览器中内置的对象】
比如:Java API
- ECMA规范
变量的命名规范。
与Java规范相同。变量名不能以数字开头,可以以_$以及字母开头。
语句以";"号结尾。
数据类型
- 基本类型
数字类型【number】
布尔类型【boolean】
空类型【null】
字符串类型【string】
未定义【undifined】 - 引用类型
Array【数组类型】
Function【函数对象类型】
Date【日期类型】
Math【算术类型】
document【文档对象】
…. - 查看数据类型
Typeof();
- 注意:
JS的数据类型是在运行时确定的,并且可以随时改变。
1 | // typeof()【判断是什么类型】 |
引入JS的方式
1 | 在页面中引入CSS样式有3中方式: |
信息输出的方式
- 内容会在页面中显示
document.write("输出内容...");
- 警告框
alert("输出内容");
- 日志输出,输出在浏览器的控制台
console.log("输出内容");
变量的使用
- 变量必须声明才能使用。
- 变量的类型在运行期确定。
关键字:var、let、const
1 | 语法: |
- 注意:
var
有变量提升作用。
JS在运行期,会将所有以var关键字声明的变量全部放在函数的最顶端,但是没有赋值。 关键字声明的变量,无论声明在何处,都会被视作声明在函数的最顶端。let
用于声明局部变量的关键字。
没有变量提升作用。
声明的变量只在声明的地方到括号结束的地方为止。const
声明的是只读常量,一但声明,便不可改变。
不使用var关键字声明的变量都是全局变量。
- 建议:局部变量尽可能不要与全局变量重名。*
模板字符串
1 | "" + ""; //字符串拼接; |
函数【function】
JS中使用function关键字来定义函数。
函数本身并不会执行,必须调用函数才能执行。与JAVA的方法类似。
语法:function 函数名(参数1,参数2...){}
注意:在JS中没有多态概念,是基于对象,方法名如果相同,后面的覆盖前面的。如果变量名与函数名相同,依然覆盖。
1 |
|
回调函数
将一个函数当做另一个函数的参数传入进去。
1 | // 例子(show函数调用fn函数): |
匿名函数
顾名思义,没有名字的函数,一般用于回调。
1 | 语法: |
函数的默认参数
函数的形参在没有具体实参传入的时候,则采用的预设的值。如果在调用时传入参数,就采用传入的值。
1 | 例子: |
箭头函数(拉姆达表达式)
- 新特性
意义在于简化匿名类的写法 - 特点
1.不需要使用function关键即可创建函数。
2.省略return关键字
3.继承当前this。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43语法:
(req,resp) => req
相当于
function(req,resp){
return req;
}
1.创建一个无参函数【没有参数的箭头函数】
ar emptyParams = () => `welcome to GuangZhou`;
2.单一函数,函数体只有一条语句的箭头函数
var welcome = (name,msg) => `${msg} : ${name}`;
3.函数体有多条语句的函数。(使用大括号、代码块)
var add = (a,b=100) => {
let c = a * b;
return c;
}
4.函数体返回的是一个对象
var Bus = (color,price) =>(
{color,price}
);
var bus = Bus("黑色",5000);
console.log(bus);
// 等同于
function Bus(color,price){
this.color = color;
this.price = price;
}
var bus = new Bus("黑色",5000);
console.log(bus);
5.rest参数
// 相当于Java中的可变参数
语法:
function 函数名(参数一,...参数n){}
循环与选择结构
if
1 | var i = 10; |
for in
类似 JAVA中的 forEach
。
for in 循环的不是对象的值,而是下标。一般用于迭代数组。
1 | var str = "你好世界"; |
数组【Array】
数组是一种复合数据结构。一个变量可以存放多个数据。
创建数组
1 | // 方式一:Array()【浏览器内置对象】 |
- 数组的常用方法
- sort():排序
- join():拼接,根据指定的字符拼接,返回一个字符串
- push():向数组的末尾追加一个或者多个元素
- pop():删除数组中最后一个元素,并返回该元素
- concat():将其它数组连接到当前数组的末尾,返回一个新数组,原数组不变。
- unshift():向数组的开头添加一个或者多个元素
- shift():删除数组开头的元素,并返回该元素
- slice():从已有数组中返回选择的子范围元素【类似切片】
- reverse():将数组反转【头变尾】
- toString():将数组转换成字符串
- indexOf():返回指定元素在数组中第一次出现的下标的位置
- forEach():迭代数组
1 | // 1. sort():排序 |
二维数组
与JAVA一样
,数组中每个元素还是一个数组。
1 | 1.二维数组的声明 |
闭包
在函数内部定义了一个或者多个函数,是用来封装一个或者多个函数的。
简单的理解:闭包就是用于封装JS函数。
1 | 语法: |
JS对象
JS对象是数据类型之一,是一种复合的数据类型。
将多种数据类型集中在数据单元,并且允许通过对象来存储和调用这些数据的值。
1 | // 1.自定义对象 |
String对象
1.charAt():根据指定下标返回下标指向的字符
2.indexOf():返回指定字符在字符串中第一次出现的下标位置。
3.lastIndexOf():返回指定字符在字符串中最后一次出现的下标位置。
4.substr():从指定的位置开始截取指定长度的子字符串。
5.subString():从指定的位置开始截取指定位置的子字符串。
6.trim():去除前后两端空白
7.replace():替换
8.toLowerCase():转换为小写
9.toUpperCase():转换为大写
10.concat():连接两个字符串
11.split():根据指定的字符拆分字符串。返回一个数组
1 |
|
Data对象
1 | // new一个Data对象 |
BOM【重点】
Browser Object Model
浏览器对象模型。
通俗的说:可以获取浏览器信息的内置对象。
1.window
2.screen
3.navgator
4.location
…
9.document
1 | // 1.window |
DOM【重点】
Document Object Model
文档对象模型
将每一个HTML标签都当做是一个对象。
将一个HTML文件抽象成一颗树。
1.创建节点
2.插入一个节点
3.获取一个对象中所有的子节点
4.dom的css样式操作,每一个对象都有一个sytle属性
1 | // 1.创建节点 |
1 | 1.创建节点 |
事件
能够与用户产生动态交互。
1 | 页面加载事件: |
1 | // 1.onclicke:点击事件 |
模块
将一个文件模块化,文件之间的引用。
以下例子,index.html
导入index.js
,index.js
引用mudole的导出
注意:
在导入过程中如果导入名称加 {}
表示导入的是指定文件的变量名称,或者函数名称等。
如果不加{}
表示导入default中的所有内容,可以理解为,将default起了一个别名
例子:
1 | // mudole.js |
1 | // index.js |
1 | <!-- index.html --> |
正则表达式
如何使用?
例子:
1 | var reg = new RegExp(这里写入表达式); |
多选框checked(全选、不全选)
直接上demo
1 |
|