新人必看的短小而精悍的javascript function

编程入门 行业动态 更新时间:2024-10-10 04:23:24

新人必看的短小而<a href=https://www.elefans.com/category/jswz/34/1752679.html style=精悍的javascript function"/>

新人必看的短小而精悍的javascript function

最近github上看到30-seconds-of-code关于js,css都是值得看的,今天分享10个fnc.

1.回到顶部,优点使用浏览器刷新频率的requestAnimationFrame,很顺滑

const scrollToTop = () => {const c = document.documentElement.scrollTop || document.body.scrollTop;if (c > 0) {window.requestAnimationFrame(scrollToTop);window.scrollTo(0, c - c / 8);}
};
复制代码

Examples:
scrollToTop()复制代码

2.smoothScroll(平滑滚动)

const smoothScroll = element =>document.querySelector(element).scrollIntoView({behavior: 'smooth'});复制代码

3.CopyToClipboard(复制到黏贴版)

const copyToClipboard = str => {const el = document.createElement('textarea');el.value = str;el.setAttribute('readonly', '');el.style.position = 'absolute';el.style.left = '-9999px';document.body.appendChild(el);const selected =document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false;el.select();document.execCommand('copy');document.body.removeChild(el);if (selected) {document.getSelection().removeAllRanges();document.getSelection().addRange(selected);}
};复制代码

Examples
copyToClipboard('我最帅'); // '我最帅' copied to clipboard.复制代码

4.HH:MM:SS 时间格式的快速获取

const getColonTimeFromDate = date => date.toTimeString().slice(0, 8);getColonTimeFromDate(new Date()); // "08:38:00"复制代码

5pose(中间件,redux源码里就使用该函数)right-to-left依次执行函数

const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args)));复制代码

const add5 = x => x + 5;
const multiply = (x, y) => x * y;
const multiplyAndAdd5 = compose(add5, multiply);
multiplyAndAdd5(5, 2); // 15复制代码

6.debounce(比较常见)

const debounce = (fn, ms = 0) => {let timeoutId;return function(...args) {clearTimeout(timeoutId);timeoutId = setTimeout(() => fn.apply(this, args), ms);};
};
复制代码

window.addEventListener('resize',debounce(() => {console.log(window.innerWidth);console.log(window.innerHeight);}, 250)
); // Will log the window dimensions at most every 250ms复制代码

7.equals 深度对比相等

const equals = (a, b) => {if (a === b) return true;if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();if (!a || !b || (typeof a != 'object' && typeof b !== 'object')) return a === b;if (a === null || a === undefined || b === null || b === undefined) return false;if (a.prototype !== b.prototype) return false;let keys = Object.keys(a);if (keys.length !== Object.keys(b).length) return false;return keys.every(k => equals(a[k], b[k]));
};复制代码

equals({ a: [2, { e: 3 }], b: [4], c: 'foo' }, { a: [2, { e: 3 }], b: [4], c: 'foo' }); // true复制代码

8.escapeHTML

const escapeHTML = str =>str.replace(/[&<>'"]/g,tag =>({'&': '&amp;','<': '&lt;','>': '&gt;',"'": '&#39;','"': '&quot;'}[tag] || tag));复制代码

escapeHTML('<a href="#">Me & you</a>'); // '&lt;a href=&quot;#&quot;&gt;Me &amp; you&lt;/a&gt;'复制代码

9.getURLParameters

const getURLParameters = url =>(url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce((a, v) => ((a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a),{});复制代码

getURLParameters('=Adam&surname=Smith'); // {name: 'Adam', surname: 'Smith'}
getURLParameters('google'); // {}复制代码

10.promisify

const promisify = func => (...args) =>new Promise((resolve, reject) =>func(...args, (err, result) => (err ? reject(err) : resolve(result))));复制代码

const delay = promisify((d, cb) => setTimeout(cb, d));
delay(2000).then(() => console.log('Hi!')); // // Promise resolves after 2s复制代码


更多推荐

新人必看的短小而精悍的javascript function

本文发布于:2024-02-07 01:27:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1752114.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:精悍   必看   小而   新人   function

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!