常用的一些正则表达式
单字符
^:表示正则的开头规则要求(^e)
$:表示正则的结尾的规则要求(e$)
+:至少出现一个前面一样的字符(+一个字符)
*:至少匹配0个或者多个字符(*A)
?:只能出现0-1次(?e)
.:匹配任何一种字符(.e)
\:转义,把在正则中有特殊含义的字符转义(\.)
组合字符:
\d:匹配任意一个数字0-9(\d)
\D:匹配任意一个非数(\D)
\w:匹配数字,字母,下划线(\w)
\W:匹配除了下划线意外的特殊字符(\W)
\s:表示空的字符(匹配空格字符);
正则修饰符:
i:忽略大小写。var reg=/ /i;
g:全局匹配
构造函数方式创建正则:
var reg=new RegExp("正则表达式",“修饰符”);
var reg=new RegExp("wW","i");
正则的一些方法:
1reg.test();检验一个字符串是否符合某一个正则规范,如果符合返回true,否则返回false
用法:reg.test(str);
2reg.exec();根据正则表达式查找,结果返回一个长度为1的数组 (数组只有一个值)
用法:reg.exec(str);
3str.search( ) ;根据正则匹配查询,如果在字符里面有匹配的字符,返回所在的下标,如果没有返回-1。
用法:str.search(reg);
4str.match( );根据正则匹配查询,把正则所匹配的所有字符,以数组的形式返回
用法:str.match(reg)
5str.replace( );根据正则匹配,替换正则所匹配的字符
用法:str.replace(正则表达式要替换的新字符串) 如果想实现全局替换,在正则表达式上加一个修饰符
str.replace(reg,"替换的内容")
1.严格模式:
“ use strict”
严格模式常见的要求:
定义变量必须要有var
严格模式下,八进制被禁用
严格模式下,函数必需声明在程序的最顶端
arguments与形参不同
eval()解析在严格模式下有自己的作用域,不被外部访问
2.let关键字
let 声明变量
let 不允许重复声明变量
let 必须在某个{}内部使用
let 在函数体内部 声明的变量没有变量提升; 暂时性死区:通过let声明的变量 变量声明之前该变量不可用,这种现象就称作暂时性死区
let 块级作用域案例:点击某个li,获取li在页面的下标
3.this指向的改变
(1) this 的指向:
this指向直接绑定它的对象。(调用它的对象)
函数
例子: btn.onclick=function(){
console.log(this);
}
函数的创建就会产生一个this
(2)改变this的指向
bind(this):可以改变匿名函数内部的this指向;
call(this):函数调用时可以改变this指向;
apply(this):函数调用时可以改变this指向;
箭头函数没有this,箭头函数中的this继承父级而来。(本身是没有this的,它的this要看它的执行环境)
箭头函数无法通过bind( ),call( ),apply( )改变this的指向
4.for of:
for(var item of arr){
//item 遍历得到的item是数组的每一个元素
}
for...of 与for...in的区别
a. for in遍历数组的得到的是数组的下标,并且下标是字符串
for in 主要用于遍历对象
b. for of 不能遍历对象
for of 遍历数组得到的是数组的第一个元素
c.for of 可以用来遍历map集合
for in不能遍历map集合
5.const关键字(定义常量的关键字)
常量:不会变化的量;(以固定值的形式存在)
常量定义后不能在使用的过程中发生改变,如果改变,程序报错
const PI = 3.14159;
PI = 3.14;//报错
常量名一般用大写表示,与变量区别开来
6.字符串模板
`dfadsfasdf${}adsf `;${}里面 可以解析变量,也可以解析函数
7.箭头函数
关键字函数 function box(){};
箭头函数 var box =()=>{};
(所有的匿名函数都都可以写成箭头函数,所有的绑定事件后面的匿名函数都可以写成箭头喊数,所有的方法的回调函数都可以写成匿名函数,那也就可以写成箭头函数,总结凡是匿名函数都可以写成箭头函数)
箭头函数与匿名函数的区别?
8.箭头函数中的this(很重要)
箭头函数没有this,箭头函数中的this继承父级而来。(本身是没有this的,它的this要看它的执行环境)
箭头函数无法通过bind( ),call( ),apply( )改变this的指向
9.解构赋值
解构赋值数组的用法:
var [a,b,b]=[1,2,3,4,5,67]
console.log(a,b,c)==1,2,3;
解构赋值在对象中的用法:
var {a,b}={a:23,b:54};
console.log(a,b)=23,54;
var {name,age}={name:"jom",age=23};
consolo.log(name,age)==jom 23;
结构赋值的交换
var [num1,num2]=[num2,num1];
作用:
1,一次性可以多个变量
2,可以快速的获取对象中对应属性的值,并且无视属性属性;
3,可以轻松实现两个数的交换
4,在函数中的使用,可以一次性返回多个结果
5,可以作用在函数的传参上,以对象的方式传递,可以无视参数的顺序,形参与实参的健名要保持一致
10.Array.from();
var arr=[ ];
伪数组:argunments,通过document.getElementsByTagName("li")
把伪数组转换成真正的数组
把属性含有length
11.set集合
var set=new Set([数据] );以数组的方式保存数据(主要用来保存数据。不限制类型,会自动去重,不会自动换数据类型);一般不保存对象
set集合保存数据的方法:
var set =new Set();
//添加值到集合中
set.add(3,12).add(53),add(name:"tom");
console.log(set);
set.szie( );查看集合数据的个数
set.has("");查找一个值在集合里面是否存在,如果不存在返回false,存在返回true;
set.delete( );删除集合里的一个指定的值
set.clear( );清空所有的set值
//遍历一个set集合
set。forEach (function(item,index)){
console.log( item,index)
}