字符串方法
charAt()
从一个字符串中返回指定的字符,超出范围返回空字符串
`var str = '大家好'
console.log(str.charAt(2))
indexOf()
返回在字符串中可以找到一个给定字符串的第一个 首字 对应索引,不存在,返回-1
'undefined'.indexOf() 返回0,默认参数也是undefined
第二个参数,起始位置超出范围返回 长度
其他和数组的一样
split()
以split括号里面的内容对字符串进行拆分成字串放入一个数组中
如果有第二个参数限制长度,就按参数长度放入数组中,多余部分省略
没有传参就直接将字符串一整个放入数组中
`var str = '大家好!'
var arr = str.split('')
console.log(arr)
slice()
规则和数组一样
trim()
用于删除字符串左右两边的空白字符
字符串方法练习
找到整段话里面“假如”的位置
`var str = '假如给我三天光明,假如给我一个大西瓜'
var idx = 0
var targetIdx = 0
while(str.indexOf('假如', idx) !== -1){
targetIdx = str.indexOf('假如',idx)
console.log(targetIdx)
idx = targetIdx + 2
}`
将话里面的“假如”换成[假如]
函数
封装一段代码,方便重复使用
函数的定义
1.函数声明
function fn(){
console.log();
}
fn();
2.函数表达式
var fn = function(){
console.log();
}
参数
能够让我们的函数处理不同的原始数据 从而得出不同的结果eg 1循环到100 1循环到n
1.实参
2.形参
自定义命名 个数随意 和实参对应位置
默认值undefined
形参会在函数内隐式声明为局部变量
3.不定参arguments
打印1-10的和的结果
endNum形参 它的值 取决于 对应传递的实参的值 默认为 undefined
`function sum(endNum){
var count = 0
for(var i = 1
count += i
}
console.log(count)
}
sum(10)
返回值
默认的返回值是undefined
函数内部执行到return这一行就结束了,后面的内容就不执行了
`function sum(x, y){
return x + y;
}
var result = sum(1,2);//把返回值进行赋值给result
console.log(result);`//把返回值进行打印
题1
返回 参数,数组中的最大值
`function getMax(arr){
var maxNum = arr[0];
for(var i = 0, len =arr.length; i < len; i++){
if(maxNum <= arr[i]){
maxNum = arr[i];
}
}
return maxNum;
}
var maxNumber = getMax([11,2,55,75,32,4]);
console.log(maxNumber);`
利用函数return之后代码不会执行的性质
可以将之前 if else if else if else分支 拆成多条并行的if
分数 100-91 A、90-81 B、80-71 C、70-61 D、60-0 E
`function getLevel(num){
if(num <= 100 && num > 90){
return 'A';
}
if(num > 80){
return 'B';
}
if(num > 70){
return 'C';
}
if(num > 60){
return 'D';
}
return 'E';
}
console.log(getLevel(89));`
有先决条件,结合return使用,使用先置排除法
判断一个数是不是数字
`function isNumber(num){
if(Number(num) !== num){
return '不是数字';
}
return '是数字';
}
console.log(isNumber(8));`
return用于常规流程,用于过滤
求输入值的2次方 前面两个if是用于过滤
`function getPow(num){
if(Number(num) !== num){
return 0;
}
if(num === 0){
return 0;
}
return num ** 2;
}
console.log(getPow(3));`
题2
好的函数 是一个函数只做一件事
获取数组中 最大值的二分之一 +10 的结果
`//num的l(L的小写)次幂
function getPow(num, l){
return num ** l
}
//num除以l
function getHaf(num, l){
return num / l
}
//num + l
function getSum(num, l){
return num + l
}
//数组中的最大值
function getMax(arr){
var len = arr.length
var maxNum = arr[0]
for(var i = 0
if(maxNum < arr[i]){
maxNum = arr[i]
}
}
return maxNum
}
var result = getSum(getHaf(getMax([11,43,53,9,30]),2),10)
console.log(result)
console.log(getMax([11,43,53,9,30]))`
arguments不定参列表 是实参列表的集合
函数在调用的时候传入的实参 形成arguments 用于传参个数不确定的情况
是类数组
长得像数组 有length 可以遍历 不能使用数组方法
//求N个数之和
`function getSum(){
var count = 0
for(var i = 0, len = arguments.length
count += arguments[i]
}
return count
}
console.log(getSum(1, 2, 3, 4, 23, 43, 32))
//获取前两个之和,修改第一个的值为100
`function getSum(){
arguments[0] = 100
return arguments[0] +arguments[1]
}
console.log(getSum(1, 2, 3, 4, 23, 43, 32))
push
`var arr = [1, 2, 3]
function push(){
var arr = Array.isArray(arguments[0]) && arguments[0] || []
var argLen = arguments.length
for(var i = 1
arr[arr.length] = arguments[i]
}
return arr
}
console.log()
console.log(push(arr, 9, 8))
函数分类
纯函数
有参数 有对应参数的返回值
该函数不会产生任何可观察的副作用
`function pure(a,b){
return a + b;
}`
非纯函数(函数副作用)
`var x = 10
function noPure(){
x = 20
console.log(x + '哈哈哈')
}`
匿名函数
格式一:
`var x = function(){
console.log('你好');
}`
格式二:
`function (){}`
IIFE匿名函数自调用
格式一:(匿名函数)();
格式二:(匿名函数());
`(function(){
console.log('我是IIFE自调用函数');
})();`
柯理化函数
`function currying(a){
return function(b){
return a + b;
}
}
var result = currying(1)(2);
console.log(result);`
函数注释
在vs中下载安装插件 keroFileHeader
函数注释:
`function isPositiveNumber(arr){
for(var i = 0, len = arr.length; i < len; i++){
if(arr[i] < 0){
return '存在负值';
}
}
return '不存在负值';
}
console.log(isPositiveNumber([1,33,4]));
`