JavaScript 如何封装一些常见的函数来提高工作效率

44 阅读2分钟

前言

为什么要封装函数

  1. JavaScript 封装函数的主要目的是为了保护代码的安全性和可维护性。
  2. 封装可以隐藏实现细节:将函数内部的实现细节封装起来,只暴露给外部必要的接口,可以使代码更加安全,防止意外修改或者滥用。
  3. 封装可以提高代码的可维护性:将功能模块封装成函数,可以使代码更加模块化,易于维护和修改。当需要修改某个功能时,只需要修改对应的函数,而不需要改动整个程序。
  4. 封装可以提高代码的复用性:将常用的功能封装成函数,可以在不同的程序中重复使用,避免重复编写相同的代码,提高开发效率。
  5. 封装可以提高代码的可读性:将复杂的代码逻辑封装成函数,可以使代码更加简洁明了,易于阅读和理解。 综上所述,JavaScript 封装函数是一种良好的编程习惯,可以提高代码的安全性、可维护性、复用性和可读性。

常见的几种函数封装

1.获取一个范围内所有的闰年个数

function getRunNianCount(x, y) {
    var count = 0;
    for (i = x; i <= y; i++) {
        if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
            count++;
        }
    }
    return count;   
}

2.获取一个范围内所有的平年个数

function getPingNianCount(x, y) {
    var count = 0;
    for (i = x; i <= y; i++) {
        if (!(i % 4 == 0 && i % 100 != 0 || i % 400 == 0)) {
            count++;
        }
    }
    return count;
}

3.获取一个范围内所有的合数个数

function getHeShuCount(x, y) {
    var count = 0;
    for (i = x; i <= y; i++) {
        var flag = true; //默认为素数
        for (j = 2; j <= i - 1; j++) {
            if (i % j == 0) {
                flag = false;
                break;
            }
        }
        if (!flag) {
            count++;
        }
    }
    return count;
}

4.获取一个范围内所有的素数个数

function getSuShuCount(x, y) {
    var count = 0;
    for (i = x; i <= y; i++) {
        var flag = true; //默认为素数
        for (j = 2; j <= i - 1; j++) {
            if (i % j == 0) {
                flag = false;
                break;
            }
        }
        if (flag) {
            count++;
        }
    }
    return count;
}

5.获取一个范围内所有的水仙花个数

function getShuiXianHuaCount(x, y) {
    var g, s, b, sum, count = 0;
    for (i = x; i <= y; i++) {
        g = i % 10;
        s = parseInt(i / 10) % 10;
        b = parseInt(i / 100);
        sum = g ** 3 + s ** 3 + b ** 3;
        if (sum == i) {
            console.log(i);
            count++;
        }
    }
    return count;
}

6.获取一个范围内所有的逢七必过数个数

function getFengQiBiGuoCount(x, y) {
    var count = 0;
    for (i = x; i <= y; i++) {
        var g = i % 10;
        var s = parseInt(i / 10) % 10;
        var b = parseInt(i / 100) % 10;
        var q = parseInt(i / 100);
        if (i % 7 == 0 || g == 7 || s == 7 || b == 7 || s == q) {
            count++;
        }
    }
    return count;
}

7.获取一个四位数范围内所有的对称式个数

function getDuiChengCount(x, y) {
    var g, s, b, q, count = 0;
    for (i = x; i <= y; i++) {
        g = i % 10;
        s = parseInt(i / 10) % 10;
        b = parseInt(i / 10 / 10) % 10;
        q = parseInt(i / 1000);
        if (g == q && s == b) {
            count++;
        }
    }
    return count;
}

8.获取两个数字范围内能组成所有的奇数的个数

function printCount(x, y) {
    var count = 0;
    for (i = x; i <= y; i++) {
        for (j = x; j <= y; j++) {
            if ((i * 10 + j) % 2 != 0) {
                console.log(i);
                count++;
            }
        }
    }
    return count;
}

9.通过Id获取HTML文档中的元素(标签)

function getId(id) {
    return document.getElementById(id)
}

10.获取一个随机数

function getRandom(min, max) {
    return parseInt(Math.random() * (max - min + 1) + min)
}

11.获取十六进制的随机颜色

function getColor() {
    var arr = ['a', 'b', 'c', 'd', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
    var res = "#";
    for (i = 1; i <= 6; i++) {
        res += arr[getRandom(0, arr.length - 1)];
    }
    return res;
}

12.将数组中重复的元素删除,得到新数组(数组去重)

function noReapeat(arr) {
    var newarr = [];
    for (i = 0; i < arr.length; i++) {
        if (newarr.indexOf(arr[i]) == -1) {
            newarr.push(arr[i]);
        }
    }
    return newarr;
}

13.获取随机的四位数验证码

function getYzm() {
  var str = "1234567890qwertyuiopasdfghjkzxcvbnmlQWERTYUIOPASDFGHJKLZXCVBNM";
  // 随机一个下标
  var newstr = ''
  for (var i = 1; i <= 4; i++) {
    var num = parseInt(Math.random() * str.length);
    newstr += str[num]
  }
  return newstr;
}

14.将新元素插入数组中并排序

function printInsert(str, num) {
  var arr = str.split(",")
  var index = arr.length
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] > Number(num)) {
      index = i;
      break;
    }
  }
  arr.splice(index, 0, num);
  arr.join(",")
  return arr;
}

15.返回指定日期的形式(xx年xx月xx日 xx:xx:xx)

function getRiQi(date) {
    var date = new Date()
    var nian = date.getFullYear();
    var yue = date.getMonth() + 1;
    var ri = date.getDate();
    var shi = date.getHours();
    var fen = date.getMinutes();
    var miao = date.getSeconds();
    //--------补0操作------------
    shi = shi < 10 ? "0" + shi : shi;
    fen = fen < 10 ? "0" + fen : fen;
    miao = miao < 10 ? "0" + miao : miao;
    return nian + "年" + yue + "月" + ri + "日" + shi + ":" + fen + ":" + miao
}

16.实现某个时间距离当前时间的倒计时

function getCountDown(str) {
    let date = new Date(); //只要new出来的都是object
    let date1 = new Date(str)
    let seconds = (date1.getTime() - date.getTime()) / 1000; //现在时间距离618这个时间亳秒差
    //换算成xx天xx小时xx分钟xx秒
    let yum = parseInt(seconds % 60);// 还剩多少秒(除不尽,余下的就是剩余的秒数)
    let yuf = parseInt(seconds / 60 % 60);// 还剩多少分(除不尽,余下的就是剩余的分)
    let yuh = parseInt(seconds / 60 / 60 % 24)
    yuh = yuh < 10 ? "0" + yuh : yuh;
    yuf = yuf < 10 ? "0" + yuf : yuf;
    yum = yum < 10 ? "0" + yum : yum;
    return  yut + "天" + yuh + "小时" + yuf + "分钟" + yum + "秒";
}

总结

封装函数是一种非常重要的编程技巧,在编写程序时可以大大提高代码的可读性和可维护性,同时也可以让程序更加高效、简洁。