js知识点整理 三

闭包

啥是闭包?

闭包就是把某个变量或者函数给包装起来

我们js当中会接触很多的全局变量,那如何保证我们的局部变量在执行完函数之后还存在在我们的内存当中呢?就可以使用闭包

闭包总的来说是实现了作用域,使得程序能够设计出更合理的,有层次的js代码

实现闭包的方式:

function f1(){

        var n = 999;

        nAdd = function(){ n+=1 }  //nAdd没有使用var,所有nAdd是一个全局变量

        function f2(){

                alert(n);

        }

        return f2;

}

var result = f1(); //只要result不消失,那么f1()函数中的n是可以通过result获取的

result(); // 999

nAdd();

result(); // 1000

正则

啥是正则?字符串的规则

我们可以用来校验字符串是否符合正则的规则,所以学习正则即学习如何描述字符串的规则。

常见的规则有很多,自行百度

创建方式

var regex = new RegExp(正则语法,"igm");

var reg =  /^([]{})([]{})([]{})$/i-g-m

修饰符igm      即ignore忽略大小写;global全局匹配,否则只会匹配第一个;multiline多行匹配

字符串替换的语法:

Str.replace(正则表达式,替换的内容)    //替换会替换整个符合匹配规则的内容

贪婪模式:

表达式

匹配结果

(d)(\w+)

"\w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd"

(d)(\w+)(d)

"\w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"
虽然 "\w+" 也能够匹配上最后一个 "d",但是为了使整个表达式匹配成功,
"\w+"
可以 "让出" 它本来能够匹配的最后一个 "d"


非贪婪模式: 

表达式

匹配结果

(d)(\w+?)

"\w+?" 将尽可能少的匹配第一个 "d" 之后的字符,
结果是:"\w+?" 只匹配了一个 "x"

(d)(\w+?)(d)

为了让整个表达式匹配成功,"\w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,
从而使整个表达式匹配成功。因此,结果是:"\w+?" 匹配 "xxx"

 

非贪婪是尽可能少的匹配

贪婪是尽可能多的匹配


猜你喜欢

转载自blog.csdn.net/livelse/article/details/80883701