亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

提升JS編程效率的19個(gè)實(shí)用技巧分享

 更新時(shí)間:2023年11月27日 09:59:15   作者:南城FE  
在實(shí)際工作中,開(kāi)發(fā)者常面臨一些需巧妙編程解決的挑戰(zhàn),有時(shí)幾行代碼就能迎刃而解,本文整理了一系列實(shí)用代碼片段,助您輕松處理URL、DOM操作、事件處理等常見(jiàn)問(wèn)題,希望對(duì)大家有所幫助

在實(shí)際工作中,開(kāi)發(fā)者常面臨一些需巧妙編程解決的挑戰(zhàn)。有時(shí)幾行代碼就能迎刃而解。本文整理了一系列實(shí)用代碼片段,助您輕松處理URL、DOM操作、事件處理、日期處理以及用戶(hù)偏好設(shè)置等常見(jiàn)問(wèn)題。

這些精選代碼片段均源自“30 seconds of code”——一個(gè)卓越的編程資源庫(kù)。我強(qiáng)烈推薦您查閱其完整代碼,以獲得更多靈感。

選擇這些代碼片段的首要準(zhǔn)則是它們的實(shí)用性。希望您能在這里發(fā)現(xiàn)寶貴的資源,并將其應(yīng)用于未來(lái)的項(xiàng)目中,以提升編程效率和質(zhì)量。

1.如何獲取base URL

const getBaseURL = url => url.replace(/[?#].*$/, '');

getBaseURL('http://url.com/page?name=Adam&surname=Smith');
// 'http://url.com/page'

2.如何檢查URL是否是絕對(duì)的

const isAbsoluteURL = str => /^[a-z][a-z0-9+.-]*:/.test(str);

isAbsoluteURL('https://google.com'); // true
isAbsoluteURL('ftp://www.myserver.net'); // true
isAbsoluteURL('/foo/bar'); // false

3.如何獲取URL參數(shù)作為對(duì)象

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

getURLParameters('google.com'); // {}
getURLParameters('http://url.com/page?name=Adam&surname=Smith');
// {name: 'Adam', surname: 'Smith'}

4.如何檢查一個(gè)元素是否包含另一個(gè)元素

const elementContains = (parent, child) =>
  parent !== child && parent.contains(child);

elementContains(
  document.querySelector('head'),
  document.querySelector('title')
);
// true
elementContains(document.querySelector('body'), document.querySelector('body'));
// false

5.如何獲取元素的所有祖先

const getAncestors = el => {
  let ancestors = [];
  while (el) {
    ancestors.unshift(el);
    el = el.parentNode;
  }
  return ancestors;
};

getAncestors(document.querySelector('nav'));
// [document, html, body, header, nav]

6.如何將元素平滑滾動(dòng)到視圖中

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

smoothScroll('#fooBar'); // scrolls smoothly to the element with the id fooBar
smoothScroll('.fooBar');
// scrolls smoothly to the first element with a class of fooBar

7.如何處理元素外部的單擊

const onClickOutside = (element, callback) => {
  document.addEventListener('click', e => {
    if (!element.contains(e.target)) callback();
  });
};

onClickOutside('#my-element', () => console.log('Hello'));
// Will log 'Hello' whenever the user clicks outside of #my-element

8.如何生成UUID

const UUIDGeneratorBrowser = () =>
  ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
    (
      c ^
      (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))
    ).toString(16)
  );

UUIDGeneratorBrowser(); // '7982fcfe-5721-4632-bede-6000885be57d'

9.如何獲取所選文本

const getSelectedText = () => window.getSelection().toString();

getSelectedText(); // 'Lorem ipsum'

10.如何將文本復(fù)制到剪貼板

const copyToClipboard = str => {
  if (navigator && navigator.clipboard && navigator.clipboard.writeText)
    return navigator.clipboard.writeText(str);
  return Promise.reject('The Clipboard API is not available.');
};

11.如何為HTML元素添加樣式

const addStyles = (el, styles) => Object.assign(el.style, styles);

addStyles(document.getElementById('my-element'), {
  background: 'red',
  color: '#ffff00',
  fontSize: '3rem'
});

12.如何切換全屏模式

const fullscreen = (mode = true, el = 'body') =>
  mode
    ? document.querySelector(el).requestFullscreen()
    : document.exitFullscreen();

fullscreen(); // Opens `body` in fullscreen mode
fullscreen(false); // Exits fullscreen mode

13.如何檢測(cè)Caps Lock是否打開(kāi)

<form>
  <label for="username">Username:</label>
  <input id="username" name="username">

  <label for="password">Password:</label>
  <input id="password" name="password" type="password">
  <span id="password-message" style="display: none">Caps Lock is on</span>
</form>
const el = document.getElementById('password');
const msg = document.getElementById('password-message');

el.addEventListener('keyup', e => {
  msg.style = e.getModifierState('CapsLock')
    ? 'display: block'
    : 'display: none';
});

14.如何檢查日期是否有效

const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());

isDateValid('December 17, 1995 03:24:00'); // true
isDateValid('1995-12-17T03:24:00'); // true
isDateValid('1995-12-17 T03:24:00'); // false
isDateValid('Duck'); // false
isDateValid(1995, 11, 17); // true
isDateValid(1995, 11, 17, 'Duck'); // false
isDateValid({}); // false

15.如何從日期中獲取時(shí)分秒信息

const getColonTimeFromDate = date => date.toTimeString().slice(0, 8);

getColonTimeFromDate(new Date()); // '08:38:00'

16.如何從Date生成UNIX時(shí)間戳

const getTimestamp = (date = new Date()) => Math.floor(date.getTime() / 1000);

getTimestamp(); // 1602162242

17.如何查看當(dāng)前用戶(hù)的首選語(yǔ)言

const detectLanguage = (defaultLang = 'en-US') =>
  navigator.language ||
  (Array.isArray(navigator.languages) && navigator.languages[0]) ||
  defaultLang;

detectLanguage(); // 'nl-NL'

18.如何查看用戶(hù)的首選配色方案

const prefersDarkColorScheme = () =>
  window &&
  window.matchMedia &&
  window.matchMedia('(prefers-color-scheme: dark)').matches;

prefersDarkColorScheme(); // true

19.如何檢查設(shè)備是否支持觸摸事件

const supportsTouchEvents = () =>
  window && 'ontouchstart' in window;

supportsTouchEvents(); // true

在這篇文章中,我們列舉了一些精心挑選的代碼片段來(lái)解決開(kāi)發(fā)過(guò)程中的常見(jiàn)挑戰(zhàn)。這些代碼片段涵蓋了處理URL、DOM操作、事件處理、日期處理和用戶(hù)偏好設(shè)置等多個(gè)方面,旨在提供簡(jiǎn)潔而高效的解決方案。希望你能在日常工作中找到并應(yīng)用這些有價(jià)值的代碼片段,從而提升編程效率和質(zhì)量。

到此這篇關(guān)于提升JS編程效率的19個(gè)實(shí)用技巧分享的文章就介紹到這了,更多相關(guān)JS技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序如何使用云開(kāi)發(fā)

    微信小程序如何使用云開(kāi)發(fā)

    這篇文章主要為大家詳細(xì)介紹了微信小程序如何使用云開(kāi)發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Javascript中將變量轉(zhuǎn)換為字符串的三種方法

    Javascript中將變量轉(zhuǎn)換為字符串的三種方法

    這篇文章主要給大家介紹了關(guān)于Javascript中將變量轉(zhuǎn)換為字符串的三種方法,這三種方法分別是:value.toString()、"" + value和String(value),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • BootStrap下拉菜單和滾動(dòng)監(jiān)聽(tīng)插件實(shí)現(xiàn)代碼

    BootStrap下拉菜單和滾動(dòng)監(jiān)聽(tīng)插件實(shí)現(xiàn)代碼

    這篇文章主要介紹了BootStrap下拉菜單和滾動(dòng)監(jiān)聽(tīng)插件實(shí)現(xiàn)代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • js+html+css實(shí)現(xiàn)手動(dòng)輪播和自動(dòng)輪播

    js+html+css實(shí)現(xiàn)手動(dòng)輪播和自動(dòng)輪播

    這篇文章主要為大家詳細(xì)介紹了js+html+css實(shí)現(xiàn)手動(dòng)輪播和自動(dòng)輪播效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • TypeScript中的方法重載詳解

    TypeScript中的方法重載詳解

    這篇文章主要給大家介紹了關(guān)于TypeScript中方法重載的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用TypeScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • JavaScript截取字符串的2個(gè)函數(shù)介紹

    JavaScript截取字符串的2個(gè)函數(shù)介紹

    這篇文章主要介紹了JavaScript截取字符串的2個(gè)函數(shù)介紹,它們分別是substring和substr函數(shù),本文用實(shí)例講解了它們的用法,需要的朋友可以參考下
    2014-08-08
  • javascript 自動(dòng)轉(zhuǎn)到命名錨記

    javascript 自動(dòng)轉(zhuǎn)到命名錨記

    javascript 自動(dòng)轉(zhuǎn)到命名錨記,方面業(yè)內(nèi)控制導(dǎo)航等信息
    2009-01-01
  • javascript 構(gòu)建一個(gè)xmlhttp對(duì)象池合理創(chuàng)建和使用xmlhttp對(duì)象

    javascript 構(gòu)建一個(gè)xmlhttp對(duì)象池合理創(chuàng)建和使用xmlhttp對(duì)象

    在我的這篇舊文里曾經(jīng)發(fā)布了一個(gè)簡(jiǎn)單的ajax操作類(lèi)。我們發(fā)現(xiàn),在舊文里創(chuàng)建xmlhttp對(duì)象的時(shí)候,每次都要new一個(gè)對(duì)象。而我們都知道new一個(gè)對(duì)象的開(kāi)銷(xiāo)是很大的。
    2010-01-01
  • webpack進(jìn)階——緩存與獨(dú)立打包的用法

    webpack進(jìn)階——緩存與獨(dú)立打包的用法

    本篇文章主要介紹了webpack進(jìn)階——緩存與獨(dú)立打包的用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • JavaScript實(shí)現(xiàn)定時(shí)隱藏與顯示圖片的方法

    JavaScript實(shí)現(xiàn)定時(shí)隱藏與顯示圖片的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)定時(shí)隱藏與顯示圖片的方法,可實(shí)現(xiàn)javascript定時(shí)關(guān)閉圖片的功能,涉及javascript針對(duì)頁(yè)面元素屬性定時(shí)操作的相關(guān)技巧,需要的朋友可以參考下
    2015-08-08

最新評(píng)論