1.什么是javascript
javascript是一门编程语言,允许用户在浏览器页面完成复杂得事情。
2.javascript产生目的
为了处理表单中用户填写一些无效信息而给后台服务器产生的压力
3.javascript组成
核心ECMAScript dom bom
4.前端三要素三剑客
html --木偶得各个部位 轮廓素颜
css--木偶的衣服 化妆
js -- 控制木偶动起来
5.javascript特点
1.客户端代码,在客户机上执行
也可以在服务器端执行,需要搭建node环境
2.解释型语言
浏览器和或者nodejs平台内置js解析器
3.弱类型语言
可以重复声明并初始化任何类型语言
4.从上到下依次解析执行
6.js执行方式
nodejs平台 浏览器中
1.node xxx.js
2.在vscode中引入script标签,可以插入到任意位置
3.外部引入脚本文件
7.注释
单行//
多行/**/
8.变量声明初始化
声明 var a;
初始化 a=10;赋值
声明并初始化 var a=10;
声明多个变量
var a,b,c;
声明多个变量并初始化
var a=10,b=20,c=30;
9.标识符--变量名,函数名---命名规则
1.由字母数字下划线以及$组成
2.不能以数字和下划线开头
3.有一定的意义,小驼峰式命名
4.不能使用关键字和保留字
10.五种基本数据类型
1.undefined
未定义类型
var a;只声明不初始化;
var a=undefined;
2.null类型
手动初始化成null
var a=null;
3.Boolean 布尔类型
var a=true; var b=false;
4.number类型
整数 小数 浮点数 十六进制 八进制 科学计数法
5.string类型
字符串类型 单双引号引起来的
11.检测数据类型 typeof
typeof 1 //number
typeof true //boolean
typeof undefined //undefined
typeof "hello" //string
typeof null //object
typeof object //object
object
function
typeof function (){}
function
12.数据类型
5种基本数据类型
null undefined number Boolean string
1种引用数据类型
object
function array
13.isNaN
isNaN 检测是否是数值
var a=9/"a";//NaN
console.log(isNaN(a));true
true NaN false 不是NaN
14.inFinite
不在数值之内的数infinity或者-infinity表示
检测参数是否在最大值和最小值之间,在的话返回true
var a=9/0;
console.log(isFinite(a));false
console.log(isFinite(100));true
15.字符串长度 length
var a="hello";
console.log(a.length);//5 下标从0开始
console.log(a.charAt(2))
16.变量提升 声明变量
var 变量声明提升 使用var声明得变量会提升到作用域前边
console.log(a); //undefined
var a=1;
console.log(a); //1
1.特点
1.变量提升
2.可以重复声明
es6
let
1.不能变量提升
2.不可以重复声明
const 用来声明常量 常量的值不可修改,常量必须在声明得时候初始化
1.const PI=3.1415926
const PI; PI=3.14
1.用来声明常量 常量的值不可修改,常量必须在声明得时候初始化
2.不可重复声明
一个循环语句应该具备三要素:计数器,循环结束条件,迭代器。
17创建Object实例:
使用构造函数创建,new Object()
var person = new Object();
person.name = "briup";
person.age = 22;
ü使用对象字面量表示法不同的属性之间用','分割,属性名和属性值之间用':'分割
var person = { name : "briup", age : 22};
18访问对象属性
点表示法,右侧必须是以属性名称命名的简单标识符
person.name
中括号表示法
person["name"]
删除属性
delete stu.name //删除学生对象中的name属性
检测属性
hasOwnProperty() 检测给定的属性是否是对象的自有属性,对于继承属性将返回false
var o = {x:1}o.hasOwnProperty("x");//true,x 为o的自有属性
o.hasOwnProperty("y");//false,o 中不存在属性y
o.hasOwnProperty("toString");//false,toString为继承属性
Object属性及方法
Object 类型所具有的任何属性和方法也同样存在于其他对象中,任何对象继承于Object对象。
Object中常用的方法:
constructor://保存用户创建当前对象的函数
toString();//返回对象的字符串表示
valueOf();//返回对象的字符串,数值,布尔值的表示。
propertyIsEnumerable(propertyName);//检查给定的属性在当前对象实例中是否存在
isPrototypeOf(object);//检查传入的对象是否是原型
19函数介绍
不需要自己封装,直接调用即可 for example:
var myArray = ['I', 'love', 'chocolate', 'frogs'];
var madeAString = myArray.join(' ');
var myNumber = Math.random()
20自定义函数
函数声明
function 函数名(形参列表){
函数体;
}
函数表达式
var 函数名=function(形参列表){
函数体;
}
调用方法:
函数名(实参列表);
函数名.call(执行环境对象,实参列表);
函数名.apply(执行环境对象,实参列表数组);
函数的内部属性
只有在函数内部才能访问的属性。
arguments :
this:指向的是函数赖以执行的环境对象
函数属性和方法
函数本质上也是一种对象,拥有属性和方法。
length:表示函数希望接受的命名参数的个数,即形参的个数。
apply():可以调用当前函数,并可以指定其执行环境对象
call():可以调用当前函数,并可以指定其执行环境对象
21数组
初始化
使用Array构造函数
var arr = new Array();
var arr = new Array(20); // 预先指定数组的大小
var arr = new Array("terry","larry","boss"); //传入参数
使用数组字面量
由一对包含数组项的方括号表示,多个数组项之间用逗号分隔
var arr = ["terry","larry","boss"];
var arr = []//空数组
访问数组元素
数组变量名[索引]
如果索引小于数组的长度,返回对应项的值
var arr = ["terry","larry","boss"];
arr[0] ;//访问数组中第一个元素,返回值为terry
如果索引大于数组的长度,数组自动增加到该索引值加1的长度
var arr = ["terry","larry","boss"];
arr[3] ="jacky";//添加元素,数组程度变为4
注意!数组最多可以包含4 294 967 295个项
数组检测
var arr = [];
typeOf(arr);//结果为object
arr instanceof Array//结果为true,在同一个全局作用域下可以这么判断
Array.isArray(arr);//结果为true,判断arr是否是数组类型
数组序列化
toString()在默认情况下都会以逗号分隔字符串的形式返回数组项
join();使用指定的字符串用来分隔数组字符串
例如 instance
var arr = ["terry","larry","boss"];
arr.toString()//terry,larry,boss
arr.join("||");//terry||larry||boss
数组添加
push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度
pop() 从数组的末尾移除最后一项,减少数组的length值,返回移除的项
shift() 移除数组中的第一个项并且返回该项,同时将数组的长度减一。
unshift() 在数组的前端添加任意个项,并返回新数组的长度。
排序
sort()
默认排序:
该方法会调用每个数组项的toString() 方法,然后按照字符序列排序
自定义排序:
a.该方法可以接受一个比较函数作为参数,比较函数有两个参数
b.如果第一个参数位于第二个参数之前,返回负数
c.如果第一个参数位于第二个参数之后,返回正数
截取方法
concat() 合并(连接)数组
方法不会更改现有数组。它总是返回一个新数组。
该方法可以使用任意数量的数组参数
方法也可以将值作为参数
slice() 裁剪数组
方法用数组的某个片段切出新数组。
方法创建新数组。它不会从源数组中删除任何元素。
可接受两个参数,比如 (1, 3)
splice() 方法可用于向数组添加新项
删除:指定两个参数(删除的起始位置,要删除的项数)
插入:指定三个参数(起始位置,0,要插入的项任意数量的项)
替换:指定三个参数(起始位置,要删除的项,要插入的任意数量的项)
注意替换:向数组的中部插入数据将始终返回一个数组,该数组中包含从原始数组中删除的项。
索引方法
indexOf()
从数组开头向后查找,使用全等操作符,找不到该元素返回-1。
第一个参数为要查找的项,第二个参数(可选)为索引开始位置。
lastIndexOf()
从数组末尾向前查找,使用全等操作符,找不到该元素返回-1。
第一个参数为要查找的项,第二个参数(可选)为索引开始位置。
迭代方法
every() 方法检查所有数组值是否通过测试。
对数组中的每一运行给定的函数,如果该函数对每一项都返回true,则该函数返回true
some()
对数组中的每一运行给定的函数,如果该函数对任一项都返回true,则返回true
filter() 过滤器
对数组中的每一运行给定的函数,会返回满足该函数的项组成的数组
map()
方法通过对每个数组元素执行函数来创建新数组。
方法不会对没有值的数组元素执行函数。
方法不会更改原始数组。
forEach() important
对数组中的每一运行给定的函数,没有返回值,常用来遍历元素
方法为每个数组元素调用一次函数(回调函数)
功能:ES5新增方法,用来遍历数组,该方法没有返回值。forEach接收的回调函数会根据数组的每一项执行,该回调函数默认有三个参数,分别为:遍历到的数组的数据,对应的索引,数组自身。
参数:分别为value,index,self。
var a = arr.forEach(function(value,index,self){
console.log(value + "--" + index + "--" + (arr === self));
})
22正则表达式
构造函数
var pattern =new RegExp("正则表达式","修饰符");
var pattern =new RegExp("abc","ig");
正则表达式字面量
var pattern = /正则表达式/修饰符;
var pattern = /abc/ig;
正则表达式
作用:
1. 主要用于表单校验,校验用户输入内容的格式是否符合我们的预期
2. 从比较长的一段字符串中,提取想要的字符内容
3. 替换文本内容
正则表达式对象的创建:
1. 构造函数
修饰符只能是g i m,可以省略
var pattern = new RegExp("正则表达式内容","修饰符");
var pattern = new RegExp("abc","ig");
2. 字面量
var pattern = /正则表达式/修饰符;
var pattern = /adc/img;
修饰符:
i ignore case 忽略大小写
abc aBcAbcabc
m multiline
多行匹配(\n)
如果目标字符串中没有\n的话 m修饰符毫无意义
g global 全词匹配
如果加了这个修饰符的话 在匹配时会维护一个 lastIndex 的属性,
用来记录当前匹配到这个字符串时的结束的位置,下一次匹配会从lastIndex开始。
如果没有g修饰符lastIndex一直为0
/abc/g aBcAbcabc
true lastIndex
原型方法
exec(参数)
参数:字符串
返回值:类数组对象
[数组,index,input...]
从参数中获取目标字符串
var pattern = /abc/g;
var str = "abc";
var result = pattern.exec(str);
console.log(result);
/abc/ : 只匹配abc或者他的其他大小写状态
/abc(d|e) : 匹配abcd或者abce
test()
用来检测一个字符串是否匹配某个模式
参数 :str
返回值 :boolean类型 true、false
toString()
参数:无
返回值:string
var pattern = new RegExp("abc", "i");
console.log(pattern.toString());
正则表达式的规则
字符类
. 用来匹配任意单个字符 行结束符除外
\d 匹配任意的一个阿拉伯数字 等价于 [0-9]
\D 匹配任意的一个不是阿拉伯数字的字符 等价于 [^0-9]
\w 匹配任意字母、数字、包括下划线 等价于 [A-Za-z0-9_]
\W 匹配任意不是字母、数字、不是下划线 等价于 [^A-Za-z0-9_]
\s 匹配空白符 空格 制表符 换行符 换页符和其他Unicode(\u00A0等)
\S 匹配一个非空白符
\t 匹配一个水平制表符(tab)
\n 匹配一个换行符(linefeed)
\r 匹配一个回车符(carriage return)
\v 匹配一个垂直制表符(vertical tab)
\f 匹配一个换页符(form-feed)
字符集合
[0-9]
[A-Z]
[^A-Z]
[012]
分组
(|)
原型属性
global
ignoreCase
multiline
lastIndex
source
flags
String对正则表达式的支持
match()
调用者:string
参数: 正则表达式
返回值:数组(匹配成功结果组成的数组,要注意正则表达式的全局修饰符)
search()
调用者:string
参数: 正则表达式,如果参数不是正则表达式,会先使用RegExp将其转为构造函数
不支持全局检索(g)
返回值:
如果匹配成功,返回第一个成功的位置
如果匹配不成功 -1
replace()
调用者:string
参数: 正则表达式,要替换的字符串
返回值:替换过后的string 不改变原来的string
node插件
nodemon
安装:npm i nodemon -g
作用:可以检测js文件的变化,然后自动运行js文件
在 JavaScript 中,正则表达式常用于两个字符串方法:search() 和 replace()。
后面会继续更新的!!!