函数的定义
定义方法
function sayHi() {
console.log('hello world');
}
let sayHello = function () {
console.log('hello');
}
** 函数定义(一定要先定义后调用)**
function sayHi() {
console.log('hello world');
}
let sayHello = function () {
console.log('hello');
}
//调用函数
sayHello()
sayHi()
函数的重复定义(后面的会覆盖前面的)
function a() {
console.log('a');
}
function a() {
console.log('b');
}
a()
实参和形参
let arr = [11, 22, 33, 44]
function loop1(data) {//形参
for (let i = 0; i < data.length; i++) {
console.log(data[i]);
}
}
//实参
loop1(arr)
这里的data为形参(形式参数)可以叫成任何的名字,arr为实参(实际参数)
利用函数来实现部分js自带的方法
- slice
let arr = [11, 22, 33, 44, 55]
function slice(start, end) {
let res = []
for (let i = start; i < end; i++) {
res += arr[i]
}
console.log(res);
}
console.log(slice(2, 4)); //[33,44]
- push
let arr = [11, 22, 33, 44, 55]
function push(code) {
arr[arr.length] = code
console.log(arr);
}
push(66)
- pop
let arr1 = [11, 22, 33, 44, 55]
function pop() {
let result = arr1[arr1.length - 1]
arr1.length--
return result
}
console.log(pop());
console.log(arr1);
- unshift
let arr2 = [11, 22, 33, 44, 55]
function unshift(code) {
for (let i = arr2.length - 1; i >= 0; i--) {
arr2[i + 1] = arr2[i]
}
arr2[0] = code
return arr2
}
console.log(unshift(55));
- shift
let arr3 = [11, 22, 33, 44, 55]
function shift() {
let a = arr3[0]
console.log(a);
for (let i = 0; i < arr3.length; i++) {
arr3[i] = arr3[i + 1]
}
arr3.length--
return arr3
}
console.log(shift());
- reverse
let arr4 = [11, 22, 33, 44, 55, 66]
function reverse() {
let len = arr4.length
for (let i = 0; i < arr4.length / 2; i++) {
//如果相等就不必替换,节约内存开销
if (arr4[i] !== arr4[len - 1 - i]) {
let temp = arr4[i]
arr4[i] = arr4[len - 1 - i]
arr4[len - 1 - i] = temp
}
}
}
reverse()
console.log(arr4);
- splice
function splice(index, length) {
let arr6 = [11, 22, 33, 44, 55, 66, 77, 88]
if (length < 0) throw '请输入合法参数'//抛出异常
let maxLen = arr6.length - index
if (!length || length > maxLen) length = maxLen
let res = []
for (let i = index; i < arr6.length - length; i++) {
if (i < index + length) {
res.push(arr6[i])
}
arr6[i] = arr6[i + length]
}
arr6.length -= length
return arr6
}
console.log(splice(2, 4)); //11,22,66,77
- insertAt
let arra = [11, 22, 33, 44, 55, 66]
function insertAt(index, s) {
for (let i = arra.length - 1; i >= index; i--) {
arra[i + 1] = arra[i]
}
arra[index] = s
}
insertAt(1, 'aa')
console.log(arra);
- concat
let arrb = [11, 22, 33]
function concat(newarr) {
let res = []
for (let i = 0; i < arrb.length; i++) {
res.push(arrb[i])
}
for (let i = 0; i < newarr.length; i++) {
res.push(newarr[i])
}
return res
}
console.log(concat([20, 30, 40]));
- indexOf
let arrc = [11, 22, 33, 'aa', 33, 'aa', 99]
function indexOf(search) {
let res = -1
for (let i = 0; i < arrc.length; i++) {
if (search === arrc[i]) {
res = i
break
}
}
return res
}
console.log(indexOf(99));
- sort
let arre = [11, 33, 22, 88, 34, 53, 43, 23]
function sort() { //冒泡排序
for (let i = 0; i < arre.length - 1; i++) {
for (let j = 0; j < arre.length - i - 1; j++) {
if (arre[j] < arre[j + 1]) {
let t = arre[j]
arre[j] = arre[j + 1]
arre[j + 1] = t
}
}
}
}
sort()
console.log(arre);
- forEach
let arrf = [11, 33, 22, 88, 34, 53, 43, 23]
function forEach(callback) {
for (let i = 0; i < arrf.length; i++) {
callback(arrf[i])
}
}
forEach(function (item) {
console.log(item);
})
- filter
function filter(callback) {
let res = []
for (let i = 0; i < arrf.length; i++) {
let isok = callback(arrf[i])
if (isok)
res.push(arrf[i])
}
return res
}
console.log(filter(function (item) {
return item > 30
}));
- find
function find(callback) {
for (let i = 0; i < arrf.length; i++) {
let isok = callback(arrf[i])
if (isok)
return arrf[i]
}
}
console.log(find(function (item) {
return item > 40
}));
- some
function some(callback) {
for (let i = 0; i < arrf.length; i++) {
let isok = callback(arrf[i])
if (isok)
return true
}
return false
}
console.log(some(function (item) {
return item > 90
}));
- every
function every(callback) {
for (let i = 0; i < arrf.length; i++) {
let isok = callback(arrf[i])
if (!isok)
return false
}
return true
}
console.log(every(function (item) {
return item > 20
}));