前言
为什么要封装函数
- JavaScript 封装函数的主要目的是为了保护代码的安全性和可维护性。
- 封装可以隐藏实现细节:将函数内部的实现细节封装起来,只暴露给外部必要的接口,可以使代码更加安全,防止意外修改或者滥用。
- 封装可以提高代码的可维护性:将功能模块封装成函数,可以使代码更加模块化,易于维护和修改。当需要修改某个功能时,只需要修改对应的函数,而不需要改动整个程序。
- 封装可以提高代码的复用性:将常用的功能封装成函数,可以在不同的程序中重复使用,避免重复编写相同的代码,提高开发效率。
- 封装可以提高代码的可读性:将复杂的代码逻辑封装成函数,可以使代码更加简洁明了,易于阅读和理解。 综上所述,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 + "秒";
}
总结
封装函数是一种非常重要的编程技巧,在编写程序时可以大大提高代码的可读性和可维护性,同时也可以让程序更加高效、简洁。