正则表达式 function 作用域 基本包装类型

正则表达式 function 作用域 基本包装类型

复习

正则表达式

  • test
  • exec
var guize = /box/ig;
var content = 'where is my box';
guize.test|exec(content);
方法说明
match(规则)返回匹配到的内容 如果匹配 不到 返回null
replace(规则,替换后的内容)将规则中的字符串 替换成指定的字符串
search(规则)返回字符串中 目标字符串开始出现的位置
split(规则)按照指定的规则拆分 a@b@c@d
var guize = /box/ig;
var content = 'this is Box that is Box';
console.log(guize.test(content));
console.log(content.match(guize));// Box Box
console.log(content.search(guize));//8 返回Box 开始的位置
console.log(content.replace(guize,'test'));//this is test that is test 将 Box 替换为 test 
var guize = / /ig; //按照空格拆分
var arr = content.split(guize);//this,is,Box,that,is,Box
console.log(arr.length);//6
元字符说明
.除了换行符之外的任意字符
[a-z0-9A-Z]a-z0-9A-Z在这个范围内 任意字符
\d匹配数字
\D匹配非数字 类似于[^0-9]
\w匹配字母数字下划线
\W匹配非字母数字下划线
\s匹配空白字符 空格 换行 制表符
\S匹配非空白字符
\b匹配空格字符
\n匹配换行字符
\0匹配null字符

锚字符 /^/

字符说明
^行首匹配
$行尾匹配

重复字符 o 代表字符 google

字符说明
x?0个或者1个x
x*0个或者任意多个x
x+至少一个x
(xyz)+把xyz看作是一个整体 至少一个整体
x{a,b}最少a个 最多b个

分组

符号说明
$1匹配第一个分组
$2匹配第2个分组
$3匹配第3个分组
console.log(RegExp.$1);

var guize = /6(.*)6 8(.*)8 9(.*)9/;
var content = 'this is 6mytest6 8haha8 9adf9';
console.log(content.match(guize));
//66mytest6 8haha8 9adf9,mytest,haha,adf
console.log(RegExp.$3);
//输出第一个分组中的内容 adf



var guize = /^([a-z]+)\s([0-9]{4})$/i;
var str = 'whenis 2002';
console.log(guize.exec(str)[0]); //whenis 2002
console.log(guize.exec(str)[1]);//whenis
console.log(guize.exec(str)[2]);//2002

替代字符

baidu|so.com|sogou.com|google.com

贪婪模式 惰性模式 ? 区别 贪婪加上? 就是惰性

贪婪模式惰性模式
x * 0个任意多个x*?
x? 0个或者一个??
  • 一个或者多个
+?
{n} 严格 n位{n}?
{n,} 至少n位{n,}?
{n,m} 至少 n 最多 m{m,n}?
var guize = /[a-z]+?/;//?开启惰性模式
var str = 'abcdefghijk';
console.log(str.replace(guize,'xxx'));   //xxxbcdefghijk
如果 取消惰性 模式  
返回 xxx  也就说 所有的字符串 全部替换成了  xxx

function 类型 函数也叫做 方法

  • 函数的声明方式
  • 函数可以作为值
  • 函数的内部属性
  • 函数的属性和方法

函数的声明方式

function box(num1,num2){
    return num1+num2;
}

var box = function(num1,num2){
     return num1+num2;
}

var box = new Function('num1','num2','return num1+num2');了解 这个不推荐  

函数可以作为值

function sum(num){
    return num+10;
}

function box(hanshuming,num){
    return hanshuming(num);
    //变成 sum(10);
}

alert(box(sum,10)); //20

函数的内部属性 arguments.callee

function kangbazi1806(num1){
    if(num1 <=1){
        return 1;
}else{
        return num1*kangbazi1806(num1-1);
}

    //5*kangbazi(4)
    //5*4*kangbazi(3)

}
alert(kangbazi1806(6));

以上是一个阶乘 自己调用自己    

如果 kangbazi1806改了  函数内部所有调用自己的地方都要跟着改名  

能不能有个方法  只需要改一次    里边自动跟着修改  

arguments.callee 即可 
function niuten(num1){
    if(num1 <=1){
        return 1;
    }else{
        return num1*arguments.callee(num1-1);
    }

}
    alert(niuten(6));

this

var color = 'red';
alert(color);   
alert(window.color);
alert(this.color); //此时this 代表window



var color = 'red'; //全局
var box = {
    color:'orange', //局部
    user:function(){
        alert(this.color); //这个代表局部
    }
}

box.user();//代表是局部   
alert(this.color);//这个代表全局


全局不能调用局部变量 但是局部可以调用全局的变量 现在有个需求 想调用局部的变量

这个时候 需要扩展作用域 call() 重点

var color = '闷骚蓝'; //全局
var test = {
    color:'明骚红', //局部
}

function useColor(){
    alert(this.color);
}

useColor(); //闷骚蓝 全局   局部调用不了
useColor.call(this); //此时这个this代表全局
useColor.call(window); //此时作用域在 全局
useColor.call(test); //此时作用域在test
//通过call 扩展了test 的作用域
//明骚红  
function  sum(num1,num2){   理解  
    return num1+num2; //它才是真正的加减运算 
}

function box(num1,num2){      //box 冒充 sum 完成 运算
    return sum.call(this,num1,num2);
    //此时this 代表  sum
}


alert(box(20,30));

apply 理解

function  sum(num1,num2,num3){
    return num1+num2+num3; //它才是真正的加减运算 
}

function box(num1,num2,num3){
    return sum.apply(this,arguments);  //arguments  是 不管 sum多少个参数  在box 通通给你传递过去
}

alert(box(20,30,50));

超时调用 setTimeout() 超时调用 执行一次

setTimeout(函数,1000);  毫秒为单位   1000毫秒=1function box(){
    console.log('我可以称呼你为您么?这样你永远在我心上');
}



setTimeout(box,5000); //5秒钟之后运行box函数   

var test = setTimeout(function(){     //test就是标识 
    console.log('种花没意思,咱们一起种草莓');
},6000);

clearTimeout(test); //取消超时调用 参数是标识 

间歇调用 setInterval(box,1000); //每隔一秒执行一次

function box(){
    console.log('你不珍惜我,过了这个村在下一个村子等你');
}
    setInterval(box,1000); //每隔一秒执行一次

var test = setInterval(box,1000);
clearInterval(test);  //取消间歇调用



var box = setInterval(function(){
    console.log('每到双十一泽林喜欢晒支付宝流水,有一天问身边的女同事,你的支付宝流水多么');
},1000);
clearInterval(box);

作业:

1.跑马灯

python1806谁与争锋
数组能够讲第一个

2.表单验证 弄明白

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值