常用的函数及递归

日期时间函数(需要用变量调用):
var b = new Date(); //获取当前时间
b.getTime() //获取时间戳,时间戳是一个自增的整数,表示从1970年1月1日零时整开始到现在的毫秒数
b.getFullYear() //获取年份
b.getMonth()+1; //获取月份,注意获取的月份是0~11,需要加1
b.getDate() //获取天
b.getHours() //获取小时
b.getMinutes() //获取分钟
b.getSeconds() //获取秒数
b.getDay() //获取星期几
b.getMilliseconds() //获取毫秒


数学函数(用Math来调用):
abs(x) 返回数的绝对值。
ceil(x) 对数进行上舍入。  取大于本身的最小整数
floor(x) 对数进行下舍入。   舍弃小数点后的
round(x) 把数四舍五入为最接近的整数。
max(x,y) 返回 x 和 y 中的最高值。
min(x,y) 返回 x 和 y 中的最低值。
pow(x,y) 返回 x 的 y 次幂。
sqrt(x) 返回数的平方根。
random() 返回 0 ~ 1 之间的随机数。 **** 取随机数是用时间戳为种子复杂计算出来的

字符串函数(用变量来调用):

indexOf
返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。
var index1 = a.indexOf("l");
//index1 = 2

charAt
返回指定位置的字符。
var get_char = a.charAt(0);
//get_char = "h"

lastIndexOf
返回字符串中一个子串最后一处出现的索引(从右到左搜索),如果没有匹配项,返回 -1 。
var index1 = lastIndexOf('l');
//index1 = 3


match
检查一个字符串匹配一个正则表达式内容,如果么有匹配返回 null。
var re = new RegExp(/^\w+$/);
var is_alpha1 = a.match(re);
//is_alpha1 = "hello"
var is_alpha2 = b.match(re);
//is_alpha2 = null

substring
返回字符串的一个子串,传入参数是起始位置和结束位置。返回的字符串包括起始位置但是不包括结束位置!

var sub_string2 = a.substring(1,4);
//sub_string2 = "ell"

substr ********
返回字符串的一个子串,传入参数是起始位置和长度,长度不是必要的参数,如果不填长度则返回从指定的其实位置到最后的字符串
var sub_string1 = a.substr(1);
//sub_string1 = "ello"
var sub_string2 = a.substr(1,4);
//sub_string2 = "ello"

replace *******
替换字符串,第一个参数代表被替换的字符串,第二个参数代表替换的字符串,默认只能替换第一次出现的字符串,如果想要把出现的全部替换,要有全局标志g,例如 a.replace(/l/g,"*") 会输出 he**o
a.replace("he","aa") 


search
执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。
var index1 = a.search(re);
//index1 = 0
var index2 = b.search(re);
//index2 = -1

split ******
通过将字符串划分成子串,将一个字符串做成一个字符串数组。
var arr1 = a.split("");
//arr1 = [h,e,l,l,o]

length 属性 *******  这是属性,不是函数
返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。


toLowerCase 
将整个字符串转成小写字母。
var lower_string = a.toLowerCase(); 
//lower_string = "hello"

toUpperCase
将整个字符串转成大写字母。
var upper_string = a.toUpperCase(); 
//upper_string = "HELLO"

 

递归,可以简单的理解为函数自己调用自己,是解决很多复杂问题时的有效方法,我的理解是:可以递归的函数是有返回值的,而返回值的位置就是函数的调用位置,在函数体内调用函数本身,就是调用的函数占据了本应有值的位置,同时返回值可以理解成函数在实现完其功能后得出的结果,所以递归是功能的套用,但是套用不是无限的,需要有一个条件来判断递归是否回归。

  以兔子的繁殖为例,假设一对兔子出生两个月后就再可以繁殖一对兔子,以后每一个月繁殖一对,并且兔子都不死,现在有一对刚出生的兔子,一年以后会有多少兔子,

    从第二个月开始,

    当月的兔子=出生的兔子+上月的兔子  

    因为兔子两个月才可以繁殖,所以

    出生的兔子=两个月前的兔子,所以

    当月的兔子=前两个月的兔子之和

    建立函数

    
    function fanZhi(m)//建立一个函数,m为经过的月数
    {
        if(m==0)    //回归条件,开始时是一只兔子
        {
            return 1 ;
        }
        if(m==-1)    //回归条件,因为函数体中套用了两个不同的自己,每一个都要有回归的值,m=-1理解为兔子出生前一个月,这是没有兔子,就是0
        {
            return 0 ;
        }
        var zs = fanZhi(m-1)+fanZhi(m-2);//套用功能,当月的兔子=前两个月的兔子之和
        return zs ;  //套用完了不要忘了返回值,递归形成
    }

  

 

posted @ 2017-12-04 17:02  黑山大胖子  阅读(310)  评论(0编辑  收藏  举报