JAVASCRIPT基础知识点——JS函数和正则表达式
树图思维导图提供 JS函数和正则表达式 在线思维导图免费制作,点击“编辑”按钮,可对 JS函数和正则表达式 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:5188c2d12c10c3cac31387bc88a33269
JS函数和正则表达式思维导图模板大纲
函数定义
函数实际上是对象,每个函数都是 Function 构造函数的实例
函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定
三种写法
// 写法一:函数声明(推荐写法) function sum (num1, num2) { return num1 + num2; }
// 写法二:函数表达式(推荐写法)var sum = function(num1, num2){ return num1 + num2; };
// 写法三:Function 构造函数(不推荐写法)var sum = new Function(
没有重载
声明两个同名函数,后面的函数会覆盖前面的函数
函数声明与函数表达式
解析器在向执行环境中加载数据时,对「函数声明」和「函数表达式」并非一视同仁
解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问)
至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行
除了上述区别之外,「函数声明」与「函数表达式」的语法是等价的
作为值的函数
不仅可以像传递参数一样把一个函数传递给另一个函数,而且可以将一个函数作为另一个函数的结果返回
函数的形参和实参
arguments :类数组对象,包含着传入函数中的所有参数
callee 属性,该属性是一个指针,指向拥有这个 arguments 对象的函数
this 对象:引用的是函数据以执行的环境对象(当在网页的全局作用域中调用函数时,this 对象引用的就是 window)
ECMAScript 5 也规范化了另一个函数对象的属性 caller,这个属性中保存着「调用当前函数的函数的引用」,如果是在全局作用域中调用当前函数,它的值为 null
函数的属性和方法
length 属性表示函数希望接收的命名参数的个数
prototype 是保存它们所有实例方法的真正所在
apply() 方法用途是在特定的作用域中调用,接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组
call() 方法与 apply() 方法的作用相同,它们的区别仅在于接收参数的方式不同。对于 call() 方法而言,第一个参数是 this 值没有变化,变化的是其余参数都直接传递给函数
传递参数并非 apply() 和 call() 真正的用武之地;它们真正强大的地方是能够扩充函数赖以运行的作用域
正则表达式定义
JavaScript 中的正则表达式用 RegExp 对象表示
// 推荐写法var expression = / pattern / flags ;
// 不推荐写法var expression = new RegExp(pattern, flags);
匹配模式支持下列3个标志
g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;
i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。
所有元字符都必须转义:( [ { \ ^ $ | ) ? * + . ] }
RegExp 实例属性
global:布尔值,表示是否设置了 g 标志。
ignoreCase:布尔值,表示是否设置了 i 标志。
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
multiline:布尔值,表示是否设置了 m 标志。
source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
RegExp 实例方法
exec() :接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回 null
返回的数组虽然是 Array 的实例,但包含两个额外的属性:index 和 input
index 表示匹配项在字符串中的位置,而 input 表示应用正则表达式的字符串
在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项)
RegExp 构造函数属性
input $_ 最近一次要匹配的字符串。Opera未实现此属性。
lastMatch $& 最近一次的匹配项。Opera未实现此属性。
lastParen $+ 最近一次匹配的捕获组。Opera未实现此属性。
leftContext $` input字符串中lastMatch之前的文本。
multiline $* 布尔值,表示是否所有表达式都使用多行模式。IE和Opera未实现此属性。
rightContext $' Input字符串中lastMatch之后的文本。
模式的局限性
JavaScript 正则表达式所不支持的特性
匹配字符串开始和结尾的\A和\Z锚
向后查找(lookbehind)
并集和交集类
原子组(atomic grouping)
Unicode支持(单个字符除外,如\uFFFF)
命名的捕获组
s(single,单行)和x(free-spacing,无间隔)匹配模式
条件匹配
正则表达式注释
树图思维导图提供 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 在线思维导图免费制作,点击“编辑”按钮,可对 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:10b9a8a2dd2fb4593f8130ef16c320fc
树图思维导图提供 光和影 在线思维导图免费制作,点击“编辑”按钮,可对 光和影 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:2f4c9606f70a3f8d98ec4d65695dc3d1