极力推荐10个短小实用的JavaScript代码段

接下来我来为大家讲解极力推荐10个短小实用的JavaScript代码段的攻略。

一、介绍

首先我们需要明确,这10个短小实用的JavaScript代码段主要是针对于前端开发者,能够帮助他们提高开发效率、优化用户体验、提供更好的交互和视觉效果。

这10个代码段分别是:
1. 获取URL参数
2. 倒计时
3. 防抖
4. 节流
5. 数组去重
6. 判断数组是否相等
7. 判断对象是否相等
8. 手写Promise
9. 发送异步请求
10. 判断浏览器类型

下面我将逐一介绍它们的使用方法。

二、获取URL参数

这个代码段可以在网址中获取指定参数的值,比如网址中有“http://www.xxx.com?name=xxx”,我们可以使用以下代码获取该网址的name参数值:

function getParam(name) {
  var search = location.search.slice(1);
  var arr = search.split("&");
  for (var i = 0; i < arr.length; i++) {
    var keyValuePair = arr[i].split("=");
    if (keyValuePair[0] === name) {
      return decodeURIComponent(keyValuePair[1]);
    }
  }
}
console.log(getParam("name")); //xxx

三、倒计时

这个代码段可以实现倒计时效果,比如在秒杀抢购时,可以通过该代码段实现秒杀倒计时:

function countDown(endDateStr) {
  var endDate = new Date(endDateStr).getTime();
  var timerId = setInterval(function () {
    var now = new Date().getTime();
    var distance = endDate - now;
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    console.log(days + "天 " + hours + "小时 " + minutes + "分钟 " + seconds + "秒 ");
    if (distance < 0) {
      clearInterval(timerId);
      console.log("倒计时结束");
    }
  }, 1000);
}

countDown("2022-01-01"); //倒计时至2022年1月1日

四、防抖

这个代码段可以避免频繁触发函数,适用于节流或防止频繁点击等场景。

function debounce(fn, delay) {
  var timer = null;
  return function () {
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(this, arguments);
    }, delay);
  };
}

var fn = function () {
  console.log("防抖成功");
};

var debounceFn = debounce(fn, 500);

window.addEventListener("scroll", debounceFn);

五、节流

这个代码段可以限制函数的执行频率,适用于动态加载等场景。

function throttle(fn, threshhold) {
  var timer, last;
  return function () {
    var context = this;
    var now = +new Date();
    var args = arguments;
    if (last && now < last + threshhold) {
      clearTimeout(timer);
      timer = setTimeout(function () {
        last = now;
        fn.apply(context, args);
      }, threshhold);
    } else {
      last = now;
      fn.apply(context, args);
    }
  };
}

var fn = function () {
  console.log("节流成功");
};

var throttleFn = throttle(fn, 500);

window.addEventListener("scroll", throttleFn);

六、数组去重

这个代码段可以去除数组中的重复元素,可以使用foreach遍历数组中的元素,一旦发现重复的元素,就将其删除即可。

function unique(arr) {
  var obj = {};
  var res = [];
  arr.forEach(function (item) {
    if (!obj[item]) {
      obj[item] = true;
      res.push(item);
    }
  });
  return res;
}

console.log(unique([1, 1, 2, 2, 3, 3])); //[1, 2, 3]

七、判断数组是否相等

这个代码段可以判断两个数组是否相等,不同于对象的判断,数组的判断需要先比较数组的长度,再逐一比较数组中的元素。

function isEqualArray(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  for (var i = 0; i < arr1.length; i++) {
    if (arr1[i] !== arr2[i]) {
      return false
    }
  }
  return true;
}

console.log(isEqualArray([1, 2, 3], [1, 2, 3])); //true
console.log(isEqualArray([1, 2, 3], [1, 3, 2])); //false

八、判断对象是否相等

这个代码段可以判断两个对象是否相等,在判断对象相等时需要先比较对象的属性名,再逐一比较属性值。

function isEqualObject(obj1, obj2) {
  var props1 = Object.getOwnPropertyNames(obj1);
  var props2 = Object.getOwnPropertyNames(obj2);
  if (props1.length !== props2.length) {
    return false;
  }
  for (var i = 0; i < props1.length; i++) {
    var propName = props1[i];
    if (obj1[propName] !== obj2[propName]) {
      return false;
    }
  }
  return true;
}

var obj1 = { name: "Tom", age: 20 };
var obj2 = { name: "Tom", age: 20 };
console.log(isEqualObject(obj1, obj2)); //true

var obj3 = { name: "Pete", age: 25 };
console.log(isEqualObject(obj1, obj3)); //false

九、手写Promise

这个代码段可以手写一个符合Promise规范的Promise,并且支持链式调用。

function Promise(fn) {
  var self = this;
  self.status = "pending";
  self.data = undefined;
  self.onResolvedCallback = [];
  function resolve(value) {
    if (self.status === "pending") {
      self.status = "resolved";
      self.data = value;
      self.onResolvedCallback.forEach(function (callback) {
        callback(value);
      });
    }
  }
  try {
    fn(resolve);
  } catch (error) {
    reject(error);
  }
}
Promise.prototype.then = function (onResolved) {
  var self = this;
  return new Promise(function (resolve) {
    function handle(onResolved) {
      var result = onResolved(self.data);
      if (result instanceof Promise) {
        result.then(resolve);
      } else {
        resolve(result);
      }
    }
    if (self.status === "pending") {
      self.onResolvedCallback.push(function () {
        handle(onResolved);
      });
    } else {
      handle(onResolved);
    }
  });
};

十、发送异步请求

这个代码段可以使用XMLHttpRequest对象发送异步请求,当请求成功后,会调用回调函数,处理响应数据。

function ajax(method, url, data, success, fail) {
  var xhr = new XMLHttpRequest();
  xhr.open(method, url, true);
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      success(xhr.responseText);
    } else {
      fail(xhr.status);
    }
  };
  xhr.send(data);
}

ajax("GET", "/api", "", function (res) {
  console.log(res);
}, function (err) {
  console.log(err);
});

结语

以上就是极力推荐10个短小实用的JavaScript代码段的攻略,这些代码段可以帮助前端开发者更好地完成项目开发和优化用户体验,但是在使用这些代码段时,需要根据具体的场景进行灵活应用,避免滥用而影响性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:极力推荐10个短小实用的JavaScript代码段 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Javascript操作URL函数修改版

    下面是关于”Javascript操作URL函数修改版”的详细攻略。这个攻略主要介绍如何使用Javascript操作URL函数来修改(更新/添加/删除)URL中的参数,以及如何获取URL中的参数。我们可以将这个过程分为三个主要步骤:获取URL、解析URL参数、更新URL参数。 步骤1:获取URL 我们可以使用window.location.href来获取当前页…

    JavaScript 2023年6月11日
    00
  • javascript利用canvas实现鼠标拖拽功能

    下面是关于“javascript利用canvas实现鼠标拖拽功能”的完整攻略: 什么是canvas? Canvas是HTML5中的一个新特性,是一个可以用脚本(通常为JavaScript)在其中绘制图形的HTML元素。Canvas有两种绘制路径:一种是通过命令式的JavaScript进行绘图;另外一次是通过使用矢量图形编辑器生成并导入路径。 实现鼠标拖拽的步…

    JavaScript 2023年6月11日
    00
  • JS去掉字符串中所有的逗号

    要去掉一个JavaScript字符串中的所有逗号,可以使用replace()方法。以下是详细步骤: 步骤1:使用正则表达式查找所有的逗号,并替换为一个空字符串。在replace方法中,正则表达式为/,/g,其中第一个斜杆表示开始正则表达式,中间的逗号表示要替换的字符,第二个斜杆表示正则表达式的结束,而字母”g”表示全局标志,指示替换所有匹配的字符串。 步骤2…

    JavaScript 2023年5月28日
    00
  • JS遍历Json字符串中键值对先转成JSON对象再遍历

    要在JavaScript中遍历JSON字符串中的键值对,首先需要将JSON字符串转换为JavaScript对象。以下是实现此任务的完整步骤: 使用 JSON.parse() 将JSON字符串转成JSON对象。JSON.parse() 使用两个参数:要解析的JSON字符串和一个可选的“reviver”函数,用于调整解析生成的结果。如果只想将JSON字符串转换成…

    JavaScript 2023年5月27日
    00
  • ES6与CommonJS中的模块处理的区别

    ES6与CommonJS是两种不同的JavaScript模块处理方式,在模块的定义和使用上有很大的不同。以下是ES6与CommonJS中的模块处理的区别的完整攻略。 ES6模块处理 ES6模块处理方式是JavaScript新标准ES6中引入的一种新的模块处理方式。ES6模块采用了静态导入(import)和导出(export)来定义和使用模块。 ES6模块定义…

    JavaScript 2023年6月10日
    00
  • js显示动态时间的方法详解

    下面是关于”js显示动态时间的方法详解”的完整攻略。 一、简介 在网页或应用中,展示动态时间是非常常见的需求。JavaScript作为一门严谨、高效、灵活、结构化的脚本语言,其展示动态时间的方法也就显得格外的简单和方便。 二、JS展示动态时间的方法 2.1. 获取时间 我们可以使用JS的Date()来获取当前时间。 var currentDate = new…

    JavaScript 2023年5月27日
    00
  • 刷新页面后让控制台的js代码继续执行

    要让控制台的JS代码在页面刷新后继续执行,可以使用以下两种方法: 1. 使用localStorage 将需要在刷新后继续执行的JS代码保存到localStorage中,然后在页面加载时读取localStorage中的代码并执行。 // 存储代码 localStorage.setItem(‘myCode’, ‘console.log("Hello W…

    JavaScript 2023年6月11日
    00
  • javascript中日期函数new Date()的浏览器兼容性问题

    JavaScript中的日期对象是非常常用的,其中一个常见的日期函数是new Date()。然而,在不同的浏览器中,它的行为是不一样的,因此需要特别注意。 不同浏览器中的行为差异 在 new Date() 方法中,如果不传递任何参数,那么它将返回当前日期和时间。例如: var now = new Date(); console.log(now); 但是,在不…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部