文章目录
- 严格模式
- 开启方式
- 为脚本开启严格模式
- 为函数开启严格模式
- 正则表达式在JS中的使用
- 创建
- 检测
- 替换
- 边界符
- 字符类
- 字符组合
严格模式
前提:严格模式在IE10以上的浏览器才支持。
开启方式
严格模式的开启方式有两种,一是为脚本开启严格模式,一是为函数开启严格模式。
为脚本开启严格模式
“use strict”; ——放在
为函数开启严格模式
将 “use strict”; 放在函数内第一句,即可为函数开启严格模式。
严格模式中的变化
1.必须先声明变量再使用;
2.严禁删除已声明变量;
3.在全局作用域中this指向undefined;
4.构造函数不加new实例化会报错;
5.定时器函数不变换;
6.事件、对象的this指向还是调用者;
7.函数中的参数不允许重名,不允许在非函数的代码块内声明函数。
高阶函数
定义:对其他函数进行操作的函数。
闭包
定义:有权访问另一个函数内部变量的函数。
特点:
1、函数可以使用全局变量;
2、外部不能使用内部变量;
3、函数使用完的局部变量会销毁。
作用:延伸了变量的作用范围。
其他:函数外面的作用于可以访问函数内部的变量,闭包内直接返回一个函数,外部对闭包进行调用,使用变量接受,再用变量调用。立即执行函数也被成为小闭包,因为它里面任何一个函数都可已使用它的参数。
递归
定义:在函数的内部调动自身,但是容易发生堆栈溢出,所以必须加退出条件。
深浅拷贝
浅拷贝:只拷贝一层数据,深层次的数据只拷贝地址,当更改拷贝出来的深层次数据时,原数据也会跟着变化。
深拷贝:拷贝所有的数据。
浅拷贝的两种实现方式:
for( var k in \'被拷贝对象\');object.assign(\'目标对象\',\'被拷贝对象\');
深拷贝的实现:利用递归函数。
if(obj[k] instanceof Array);//判断被拷贝的数据是否属于数组if(obj[k] instanceof Object);//判断被拷贝的数据是否属于对象//判断时,先判断数组,再判断对象,因为数组也属于对象
正则表达式
定义:匹配字符串中字符组合的模式,也是对象。
作用:验证表单(匹配、替换或者提取)。
正则表达式在JS中的使用
创建
创建正则表达式的两种方式:
var 变量 = new RegExp(/正则表达式/);var 变量 = /正则表达式/;//通过字面量的方式创建
检测
正则表达式.test(被检测的数据);//返回布尔值
替换
string.replace(被替换的字符串或正则表达式,替换为);
参数:/表达式/[switch]。
switch修饰符:
g:全局匹配;
i:忽略大小写;
gi:全局匹配+忽略大小写
特殊字符
边界符
边界符有 ^ 和 $两个符号,并且,正则表达式不需要加引号。
/abc/——只要包含abc就返回true;
/^abc/——必须以abc开头
/^abc$/——必须是abc才行,精准筛选。
字符类
[] 表示有一系列字符可以选择,只要匹配其中一个就行。
/[abc]/——只要包含a或b或c
/^ [a-z]/ ——26个小写英文字母任选其一
/^ [abc]$/——只能是a或b或c
字符组合
/^ [a-zA-Z]$/——26个英文字母
/^ [a-zA-Z0-9_]$/——一般用来匹配用户名
如果在中括号中有 ^ 符号则表示取反。
量词符
作用: 设定模式出现的次数
(*)——出现0次或者多次
(+)——出现1次或多次
(?)——出现0次或一次
({n})——重复n次
({n,})——重复大于等于n次
({n1,n2})——重复大于n1小于n2次
括号总结
中括号——字符集合,匹配里面的任意一个字符
大括号——量词符,表示重复次数
小括号——表示优先级
预定义类
作用:常见模式的简写。
\\d——0-9
\\D——0-9以外的
\\w——[a-zA-Z0-9]
\\W——[^a-zA-Z0-9]
\\s——空格(换行符、制表符、空格符)
\\S——非空格
其他
正则里面的或运算符号为 “|”
在线测试:www.c.runoob.com 菜鸟工具