前言:
趁年轻去努力,别对不起你儿时吹的牛逼
--------------------------------正文---------------------------------
垃圾回收机制(内存泄露)
1. 局部 (很短)
函数执行完毕,局部变量会回收
eg:
function show(){
var a = 12;
}
调用前 没有a
show(); 调用中 有a
调用后 没有a
2. 全局 (很长)
当页面关闭时,全局变量才会回收
3. 闭包 (可长可短)
1)当里面的函数还有用,函数内的局部变量就不会消失
eg:
function show(){
var a = 12;
document.onclick = function(){
alert(a);
};
}
调用前 没有a
show(); 调用中 有a
调用后 有a
2)当里面的函数还有用,函数内所有的局部变量都不会消失
eg:
function show(){
var a = 12;
var b = 5;
document.onclick = function(){
alert(a);
};
}
调用前 没有a 没有b
show(); 调用中 有a 有b
调用后 有a 有b
3)当里面的函数还有用,那整条作用域链上的变量都不会消失
eg:
var a = 12;
function show(){
var b = 5;
function show2(){
var c = 3;
document.onclick = function(){
alert(b);
};
}
show2();
}
调用前 有a 没有b 没有c
show(); 调用中 有a 有b 有c
调用后 有a 有b 有c
作用域链
先在当前函数找,如果找不到,找父函数,一层一层往上找,直到找到全局
正则(又叫正则表达式或者规则表达式)Regular Expression
是操作字符串的
用法:
new RegExp('正则','选项')
正则的简写:
/规则/选项
方法(校验的时候,正则必须加行首和行尾)
str.search(re) 搜索 // str(字符串) re(正则)
str.match(re) 匹配
str.replace(str|re,str|fn) 替换
re.test(str) 校验
正则表达式必用
写法 | 含义 | 相同 |
---|---|---|
. | 所有字符 | --- |
\. | 正常的字符串. | --- |
^ | 行首 | --- |
$ | 行尾 | --- |
\ | 转义 | --- |
[ ] | 任选一个/范围/排除 | --- |
( ) | 组合 | --- |
\t | 一个制表符 | --- |
\n | 换行 | --- |
\d | 所有数字 | [ 0-9 ] |
\w | 所有英文_数字 | [ 0-9a-zA-Z_ ] |
\s | 所有空白符号 | --- |
\D | 除了所有数字 | [ ^0-9 ] |
\W | 除了英文数字_ | [ ^0-9a-zA-Z_ ] |
\S | 除了空白符号 | --- |
[ ] 的作用
1、任选一个
/a[abc]c/ 可以是 aac/abc/acc
/a[abc]+c/ aaac/abcc/aabcc 都可以,中间可以有多位
/abc+/ abccccccccccc c是几位都可以
2、范围
/[0-9]/ 所有数字
/[a-z]/ 所有小写字母
/[A-Z]/ 所有大写字母
/[0-9a-zA-Z]/ 所有数字和字母
3、排除(^ 取反)
/[^0-9]/ 除了数字
/[^a-zA-Z]/ 除了英文字母
/[^0-9a-zA-Z]/ 除了数字和字母
量词
写法 | 含义 | 相同 |
---|---|---|
{n} | n个 | --- |
{n,m} | 最少n个,最多m个 | --- |
{n,} | 最少n个,最多不限 | --- |
? | 出现一次或者不出现 | {0,1} |
+ | 最少出现一次 | {1,} |
* | 随意 | {0,} |
正则特性
1.懒
选项
i Ignore 忽略 忽略大小写
m muti-line 多行模式 默认是单行模式
g global 全局 全局匹配
2.笨
量词 模糊(若干)
5个梨 梨+
梨{5}
3.贪婪
正则例子
1、邮箱
名字 英文数字_ \w+
@ \@
域名 英文数字- [a-zA-Z0-9\-]+
域名后缀 英文 2-6
出现1,2次 (\.[a-zA-Z]{2,6}){1,2}
/^\w+\@[a-zA-Z0-9\-]+(\.[a-zA-Z]{2,6}){1,2}$/
2、座机
区号:3到4位数字
第一位一定是0
第二位一定不是0 0[1-9]\d{1,2}
- \-
号码:
第一位不是0
7到8位数字 [1-9]{6,7}
/^0[1-9]\d{1,2}\-[1-9]{6,7}$/
3、手机号
11位数字:第一位肯定是 1,第二位 3 4 5 7 8
/^1[34578]\d{9}$/
4、年龄 18-100
18-19 1[89]
20-99 [2-9]\d
100 100
有 | 必须加 ()
/^(1[89]|[2-9]\d|100)$/
5、身份证
第一位不是0
15或18位
最后一位可以是 x X
/^[1-9](\d{13}|\d{16})[0-9xX]$/