字符串查找和函数操作题目解析

1. 字符串查找

function isContain(a, b){
  var aLen = a.length
  var bLen = b.length
  for(var i = 0; i < bLen; i++){
    if(b[i]===a[0]){
      for(var j = 1; j < aLen; j++){
        if(i + j >= bLen || a[j] != b[i + j]) {
          break;
        }

        if(j == aLen - 1) {
          return i
        }
      }
    }
  }
  return -1
}
console.log(isContain('34', '1234567'));
console.log(isContain('35', '1234567'));
console.log(isContain('355', '12354355'));

结果:
2
-1
5
//字符串匹配 //循环全文本,找到和需要匹配的字符串第一个字符相匹配i,如果一直找不到直接返回-1 //找到以后,遍历需要匹配的字符串,看后续字符是否一直匹配,如果是,返回上面的i

2. 函数操作,无限乘

function multiply(num) {
  var res = num;
  return function inner(nextNum) {
    if(nextNum == undefined) {
      return res;
    } else {
      res = res * nextNum; 
      return inner;
    }
  };
}
console.log(multiply(1)());
console.log(multiply(1)(2)(3)());
console.log(multiply(1)(2)(3)(4)());

结果:
1
6
24
//闭包应用 //开始调用multiply,初始化开始值,为了实现链式,需要返回一个函数 //调用返回函数,根据参数判断直接返回结果还是继续返回一个函数并且做乘法运算
原文地址:https://www.cnblogs.com/bravo2012/p/11356416.html