JS高级语法基础(三)

文章目录

  • 严格模式
    • 开启方式
      • 为脚本开启严格模式
      • 为函数开启严格模式
    • 严格模式中的变化
  • 高阶函数
  • 闭包
  • 递归
  • 深浅拷贝
  • 正则表达式
    • 正则表达式在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 菜鸟工具

你可能感兴趣的:(笔记,javascript,正则表达式,js)