-
String的正则API
替换:
衍生操作: 删除关键字: 其实将关键词替换为""
切割: 将一个字符串,按指定的切割符,切割成多段子字符串
2种: -
简单切割: 切割符是固定的
var arr=str.split(“切割符”)
将str按指定的"切割符",切割为多段子字符串,保存在数组arr中
固定套路: 打散字符串为字符数组
var chars=str.split("") -
复杂切割: 切割符不是固定的
var arr=str.split(/正则/i) -
RegExp对象:
什么是: 保存一条正则表达式,并提供了用正则表达式执行验证和查找的API 的对象
何时: 只要在程序中保存和使用正则表达式,都要用RegExp对象
如何:
创建:- 用/创建(直接量): var reg=/正则/ig
何时: 如果正则表达式是固定不变的 - 用new创建: var reg=new RegExp(“正则”,“ig”)
何时: 如果正则表达式需要在运行时才动态生成时
API:
- 用/创建(直接量): var reg=/正则/ig
-
验证:
var bool=reg.test(str)
用正则reg,检测str是否符合正则的格式要求
问题: 正则默认只要找到部分内容与正则匹配就返回true
解决: 必须从头到尾完整匹配,才返回true
只要验证,必须前加^后加$,表示从头到尾的意思 -
查找:
获取每个关键词的内容和位置:
var arr=reg.exec(str)
在str中查找下一个符合reg要求的关键词的内容和位置
如果反复调用reg.exec(),则自动会向后找下一个。
返回值: arr:[ “0”:“关键词”, “index”: 关键词位置 ] -
Function
什么是函数: 封装一项任务的步骤清单代码段的对象,再起一个名字。
为什么: 重用!
何时: 只要一段代码可能被反复使用,都要创建函数。
如何:
创建: 见PPT function1
重载(overload):
什么是: 相同函数名,不同形参列表的多个函数,在调用时,可自动根据传入实参的不同,选择对应的函数调用
为什么: 减少函数名的数量,减轻维护的负担
何时: 一件事,可能根据传入的参数不同,执行不同的操作时
如何:
问题: js语法默认不支持重载
因为js不允许多个同名函数同时存在
如果存在,最后一个函数会覆盖之前所有
解决: 使用arguments对象变通实现
什么是arguments对象: 每个函数内自动创建的,准备接受所有传入函数的实参的 类数组对象
自动创建: 不用自己创建,就可直接使用
接受所有实参:
类数组对象: 长的像数组的对象
vs 数组: 相同: 1. 下标 2. length 3. 遍历
不同: 类型不同,API不通用
何时: 只要不确定将来传入函数的参数个数时,就不定义形参列表,而是用arguments接住所有的实参值。
匿名函数:
什么是: 定义函数时,不写名的函数
何时: 如果一个函数只用一次,不会反复使用,就不起函数名
为什么: 节约内存!——使用一次后,自动释放!
如何:
2种场景:
- 回调函数: 自己定义的函数,自己不调用,而是传给其它对象或函数,被别人调用。
arr.sort(function(a,b){return a-b})
xhr.onreadystatechange=function(){ … }
pool.query(sql,[参数],function(err,result){ … }) - 匿名函数自调: 定义函数后,立刻自己调用自己
为什么: 避免使用全局变量,造成全局污染
何时: 所有js代码都应该封装在一个匿名函数自调中
如何:
(function(){
…
})()//调用后,匿名函数内的局部变量都释放了