js函数(1)(学习整理)

函数的定义

定义方法

 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
        }));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值