cainiaoblog 23.2.171
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CNAME +1 -0
- package/MP_verify_o6dHCK5mIkxNpzvZ.txt +1 -0
- package/README.md +8 -0
- package/about/index.html +54 -0
- package/ads.txt +1 -0
- package/app/manual.html +104 -0
- package/appConfigs/config +1 -0
- package/archives/2018/index.html +48 -0
- package/archives/2019/index.html +48 -0
- package/archives/2019/page/2/index.html +48 -0
- package/archives/2020/index.html +48 -0
- package/archives/2021/index.html +48 -0
- package/archives/2022/index.html +48 -0
- package/archives/2023/index.html +48 -0
- package/archives/index.html +48 -0
- package/archives/page/2/index.html +48 -0
- package/archives/page/3/index.html +48 -0
- package/article/10047.html +148 -0
- package/article/10164.html +64 -0
- package/article/10624.html +436 -0
- package/article/10745.html +586 -0
- package/article/11674.html +71 -0
- package/article/11939.html +72 -0
- package/article/12238.html +86 -0
- package/article/1230.html +533 -0
- package/article/13265.html +69 -0
- package/article/13823.html +78 -0
- package/article/14125.html +72 -0
- package/article/14192.html +561 -0
- package/article/14375.html +85 -0
- package/article/14744.html +83 -0
- package/article/14936.html +451 -0
- package/article/1518.html +250 -0
- package/article/15428.html +71 -0
- package/article/15518.html +288 -0
- package/article/15569.html +418 -0
- package/article/1566.html +122 -0
- package/article/16017.html +156 -0
- package/article/16947.html +440 -0
- package/article/17096.html +82 -0
- package/article/17246.html +89 -0
- package/article/17575.html +350 -0
- package/article/179.html +757 -0
- package/article/18039.html +233 -0
- package/article/18071.html +375 -0
- package/article/18142.html +71 -0
- package/article/19909.html +160 -0
- package/article/20014.html +89 -0
- package/article/20021.html +389 -0
- package/article/20037.html +280 -0
- package/article/20056.html +95 -0
- package/article/20093.html +404 -0
- package/article/2021.html +607 -0
- package/article/20459.html +115 -0
- package/article/20613.html +263 -0
- package/article/20635.html +71 -0
- package/article/21317.html +71 -0
- package/article/21320.html +90 -0
- package/article/21782.html +548 -0
- package/article/22230.html +435 -0
- package/article/22237.html +347 -0
- package/article/22398.html +109 -0
- package/article/22422.html +270 -0
- package/article/22565.html +300 -0
- package/article/23046.html +250 -0
- package/article/23083.html +215 -0
- package/article/23195.html +297 -0
- package/article/23301.html +835 -0
- package/article/23589.html +285 -0
- package/article/23655.html +338 -0
- package/article/23864.html +76 -0
- package/article/23914.html +96 -0
- package/article/24169.html +135 -0
- package/article/24581.html +349 -0
- package/article/2475.html +500 -0
- package/article/24826.html +77 -0
- package/article/24924.html +247 -0
- package/article/25164.html +1495 -0
- package/article/25318.html +394 -0
- package/article/25710.html +1129 -0
- package/article/25734.html +83 -0
- package/article/26083.html +174 -0
- package/article/26147.html +283 -0
- package/article/26291.html +110 -0
- package/article/26354.html +71 -0
- package/article/26624.html +145 -0
- package/article/26639.html +298 -0
- package/article/26850.html +138 -0
- package/article/26940.html +258 -0
- package/article/27796.html +190 -0
- package/article/27800.html +161 -0
- package/article/28963.html +159 -0
- package/article/28976.html +247 -0
- package/article/29042.html +72 -0
- package/article/29596.html +81 -0
- package/article/29619.html +183 -0
- package/article/29623.html +329 -0
- package/article/29829.html +205 -0
- package/article/29abbd1c.html +112 -0
- package/article/30215.html +178 -0
- package/article/30552.html +78 -0
- package/article/30818.html +201 -0
- package/article/31330.html +364 -0
- package/article/3154.html +577 -0
- package/article/31695.html +348 -0
- package/article/31826.html +71 -0
- package/article/31843.html +132 -0
- package/article/32280.html +212 -0
- package/article/32431.html +74 -0
- package/article/32443.html +72 -0
- package/article/32732.html +122 -0
- package/article/3286.html +251 -0
- package/article/32960.html +198 -0
- package/article/33713.html +72 -0
- package/article/33899.html +615 -0
- package/article/34351.html +74 -0
- package/article/34372.html +89 -0
- package/article/34410.html +74 -0
- package/article/34431.html +118 -0
- package/article/3447.html +75 -0
- package/article/34474.html +142 -0
- package/article/34871.html +147 -0
- package/article/35397.html +175 -0
- package/article/3544.html +199 -0
- package/article/35503.html +115 -0
- package/article/35624.html +84 -0
- package/article/35697.html +384 -0
- package/article/35863.html +73 -0
- package/article/36037.html +253 -0
- package/article/36118.html +71 -0
- package/article/3621.html +119 -0
- package/article/36251.html +296 -0
- package/article/36642.html +352 -0
- package/article/37102.html +763 -0
- package/article/37336.html +351 -0
- package/article/37351.html +89 -0
- package/article/3760.html +294 -0
- package/article/37749.html +75 -0
- package/article/37789.html +83 -0
- package/article/38005.html +765 -0
- package/article/38009.html +284 -0
- package/article/38269.html +194 -0
- package/article/38344.html +88 -0
- package/article/38359.html +334 -0
- package/article/38423.html +379 -0
- package/article/38530.html +213 -0
- package/article/38743.html +268 -0
- package/article/38753.html +204 -0
- package/article/38881.html +71 -0
- package/article/39087.html +414 -0
- package/article/39309.html +84 -0
- package/article/39486.html +74 -0
- package/article/39637.html +306 -0
- package/article/39839.html +72 -0
- package/article/39937.html +152 -0
- package/article/39970.html +71 -0
- package/article/402.html +559 -0
- package/article/40698.html +71 -0
- package/article/40811.html +71 -0
- package/article/40964.html +462 -0
- package/article/41011.html +322 -0
- package/article/41152.html +78 -0
- package/article/41696.html +71 -0
- package/article/41717.html +281 -0
- package/article/41777.html +149 -0
- package/article/419.html +985 -0
- package/article/4233.html +136 -0
- package/article/4292.html +86 -0
- package/article/43302.html +96 -0
- package/article/43397.html +106 -0
- package/article/43724.html +281 -0
- package/article/43999.html +224 -0
- package/article/44426.html +77 -0
- package/article/44964.html +137 -0
- package/article/45004.html +123 -0
- package/article/4510.html +83 -0
- package/article/45156.html +320 -0
- package/article/45157.html +52 -0
- package/article/45267.html +87 -0
- package/article/45641.html +207 -0
- package/article/45960.html +75 -0
- package/article/46100.html +1262 -0
- package/article/46366.html +74 -0
- package/article/46771.html +96 -0
- package/article/46911.html +517 -0
- package/article/46948.html +137 -0
- package/article/46ee4850.html +349 -0
- package/article/47019.html +84 -0
- package/article/47532.html +94 -0
- package/article/4783.html +429 -0
- package/article/47972.html +72 -0
- package/article/48216.html +127 -0
- package/article/48252.html +185 -0
- package/article/48520.html +74 -0
- package/article/48722.html +75 -0
- package/article/48807.html +99 -0
- package/article/49126.html +323 -0
- package/article/50001.html +88 -0
- package/article/50058.html +151 -0
- package/article/50343.html +410 -0
- package/article/50510.html +82 -0
- package/article/51082.html +98 -0
- package/article/51677.html +111 -0
- package/article/5204.html +1085 -0
- package/article/52500.html +538 -0
- package/article/52689.html +259 -0
- package/article/52877.html +569 -0
- package/article/53125.html +191 -0
- package/article/53428.html +251 -0
- package/article/53524.html +74 -0
- package/article/53698.html +322 -0
- package/article/53803e6.html +93 -0
- package/article/53924.html +291 -0
- package/article/53962.html +253 -0
- package/article/54006.html +71 -0
- package/article/54018.html +88 -0
- package/article/54161.html +83 -0
- package/article/54178.html +69 -0
- package/article/54258.html +327 -0
- package/article/54295.html +214 -0
- package/article/54313.html +1976 -0
- package/article/54351.html +90 -0
- package/article/54604.html +80 -0
- package/article/54632.html +71 -0
- package/article/54912.html +756 -0
- package/article/54918.html +129 -0
- package/article/55119.html +136 -0
- package/article/55756.html +118 -0
- package/article/55769.html +136 -0
- package/article/55870.html +161 -0
- package/article/56139.html +92 -0
- package/article/56557.html +69 -0
- package/article/56604.html +69 -0
- package/article/56816.html +266 -0
- package/article/56926.html +153 -0
- package/article/57747.html +409 -0
- package/article/57965.html +475 -0
- package/article/58816.html +78 -0
- package/article/59059.html +435 -0
- package/article/59095.html +350 -0
- package/article/59349.html +244 -0
- package/article/59402.html +216 -0
- package/article/59448.html +55 -0
- package/article/59870.html +94 -0
- package/article/59877.html +208 -0
- package/article/5dbb6f41.html +86 -0
- package/article/6008.html +75 -0
- package/article/60327.html +126 -0
- package/article/6035.html +76 -0
- package/article/60428.html +71 -0
- package/article/60544.html +128 -0
- package/article/61319.html +95 -0
- package/article/61367.html +93 -0
- package/article/624d1918.html +292 -0
- package/article/62543.html +71 -0
- package/article/62887.html +169 -0
- package/article/63074.html +120 -0
- package/article/63266.html +311 -0
- package/article/63351.html +74 -0
- package/article/63542.html +104 -0
- package/article/63824.html +275 -0
- package/article/64051.html +653 -0
- package/article/64189b69.html +72 -0
- package/article/64354.html +75 -0
- package/article/64869.html +79 -0
- package/article/64923.html +596 -0
- package/article/65128.html +95 -0
- package/article/65295.html +79 -0
- package/article/6888.html +75 -0
- package/article/7065.html +84 -0
- package/article/7455.html +85 -0
- package/article/7a3ef8f.html +315 -0
- package/article/8140.html +188 -0
- package/article/8190.html +85 -0
- package/article/8225.html +78 -0
- package/article/84c9ccd6.html +159 -0
- package/article/8f9a9ae3.html +82 -0
- package/article/9174.html +73 -0
- package/article/9738.html +294 -0
- package/article/a4145266.html +71 -0
- package/article/bedea419.html +72 -0
- package/article/bf7e7421.html +78 -0
- package/article/c1867fbf.html +103 -0
- package/article/c5576490.html +70 -0
- package/article/dcb0db28.html +76 -0
- package/article/fc3b727a.html +79 -0
- package/atom.xml +445 -0
- package/baidusitemap.xml +1079 -0
- package/blocks/dns.txt +264 -0
- package/blocks/filter.txt +1070 -0
- package/blocks/script.js +42 -0
- package/categories/CDN/index.html +48 -0
- package/categories/IDE/index.html +48 -0
- package/categories/git/index.html +48 -0
- package/categories/hexo/index.html +48 -0
- package/categories//345/205/254/345/205/261/350/212/202/346/227/245/index.html +48 -0
- package/categories//345/210/206/344/272/253/index.html +48 -0
- package/categories//345/211/215/347/253/257/index.html +48 -0
- package/categories//345/211/215/347/253/257/page/2/index.html +48 -0
- package/categories//345/211/215/347/253/257//346/265/217/350/247/210/345/231/250/index.html +48 -0
- package/categories//345/211/215/347/253/257//346/265/217/350/247/210/345/231/250//347/275/221/347/273/234/345/215/217/350/256/256/index.html +48 -0
- package/categories//345/215/232/345/256/242/index.html +48 -0
- package/categories//345/267/245/345/205/267/index.html +48 -0
- package/categories//345/271/277/345/221/212/350/277/207/346/273/244/index.html +48 -0
- package/categories//345/271/277/345/221/212/350/277/207/346/273/244//350/247/206/351/242/221/347/224/265/350/247/206/345/260/217/350/257/264/346/274/253/347/224/273/350/265/204/350/256/257/351/237/263/344/271/220/index.html +48 -0
- package/categories//346/255/243/345/210/231/index.html +48 -0
- package/categories//346/265/217/350/247/210/345/231/250/index.html +48 -0
- package/categories//347/256/227/346/263/225/index.html +48 -0
- package/categories//350/265/204/350/256/257/index.html +48 -0
- package/categories//350/275/273/346/235/276/344/270/200/345/210/273/index.html +48 -0
- package/cdn/css/font-awesome.min.css +4 -0
- package/cdn/css/grids-responsive-min.css +7 -0
- package/cdn/css/normalize.css +349 -0
- package/cdn/css/pure-min.css +11 -0
- package/cdn/fonts/fontawesome-webfont.eot +0 -0
- package/cdn/fonts/fontawesome-webfont.svg +2671 -0
- package/cdn/fonts/fontawesome-webfont.ttf +0 -0
- package/cdn/fonts/fontawesome-webfont.woff +0 -0
- package/cdn/fonts/fontawesome-webfont.woff2 +0 -0
- package/cdn/js/Valine.min.js +17 -0
- package/cdn/js/canvas-nest.js +1 -0
- package/cdn/js/clipboard.min.js +7 -0
- package/cdn/js/crypto-js.js +25 -0
- package/cdn/js/jquery.min.js +2 -0
- package/css/default.css +1144 -0
- package/css/donate.css +338 -0
- package/css/hbe.style.css +749 -0
- package/css/style.css +2095 -0
- package/donate/index.html +39 -0
- package/google917dcf72f6e5c7f5.html +1 -0
- package/guestbook/index.html +68 -0
- package/hosts/ads.txt +149 -0
- package/hosts/flash.txt +9 -0
- package/hosts/github.txt +6 -0
- package/hosts/google.txt +16936 -0
- package/hosts/winrar.txt +2 -0
- package/img/alipay.svg +46 -0
- package/img/bitcoin.svg +135 -0
- package/img/blog.ico +0 -0
- package/img/blog.png +0 -0
- package/img/gaba.png +0 -0
- package/img/github.svg +1 -0
- package/img/like.svg +1 -0
- package/img/mp-mini.jpg +0 -0
- package/img/mp.png +0 -0
- package/img/paypal.svg +63 -0
- package/img/upy_logo.svg +59 -0
- package/img/wechat.svg +49 -0
- package/index.html +48 -0
- package/jd_root.txt +1 -0
- package/js/codeblock-resizer.js +51 -0
- package/js/dark.js +12 -0
- package/js/donate.js +87 -0
- package/js/fixedPage.js +106 -0
- package/js/gitment.browser.js +3751 -0
- package/js/search.js +86 -0
- package/js/share.js +60 -0
- package/js/smartresize.js +32 -0
- package/js/totop.js +12 -0
- package/kankan/index.html +77 -0
- package/lib/hbe.js +293 -0
- package/package.json +25 -0
- package/page/10/index.html +49 -0
- package/page/11/index.html +59 -0
- package/page/12/index.html +67 -0
- package/page/13/index.html +63 -0
- package/page/14/index.html +66 -0
- package/page/15/index.html +60 -0
- package/page/16/index.html +60 -0
- package/page/17/index.html +62 -0
- package/page/18/index.html +61 -0
- package/page/19/index.html +58 -0
- package/page/2/index.html +48 -0
- package/page/20/index.html +57 -0
- package/page/21/index.html +61 -0
- package/page/22/index.html +55 -0
- package/page/23/index.html +64 -0
- package/page/24/index.html +60 -0
- package/page/25/index.html +58 -0
- package/page/26/index.html +48 -0
- package/page/27/index.html +58 -0
- package/page/3/index.html +48 -0
- package/page/4/index.html +48 -0
- package/page/5/index.html +51 -0
- package/page/6/index.html +51 -0
- package/page/7/index.html +51 -0
- package/page/8/index.html +53 -0
- package/page/9/index.html +48 -0
- package/randomcall/README.html +1 -0
- package/randomcall/lucker.html +290 -0
- package/randomcall/lucky.png +0 -0
- package/robots.txt +22 -0
- package/search.xml +6740 -0
- package/sitemap.xml +2669 -0
- package/tags//345/216/237/345/210/233/index.html +48 -0
- package/tags//345/250/261/344/271/220/index.html +48 -0
- package/tags//346/211/213/345/206/231/index.html +48 -0
- package/tags//347/226/253/346/203/205/index.html +48 -0
- package/tags//350/275/254/350/275/275/index.html +48 -0
- package/tags//350/275/254/350/275/275/page/2/index.html +48 -0
- package/v.html +90 -0
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="zh-CN" data-dark><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description" content="前端壹菜鸟,记录工作难题,关注前端知识,收集精彩博文,做技术的搬运工"><meta name="msvalidate.01" content="0FE4D8B3381D3D87088996B886E1E2BD"><title>12个提高 JavaScript 技能的概念! | 前端壹菜鸟</title><link rel="stylesheet" type="text/css" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/css/style.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/normalize.css@latest/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/pure-min.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/grids-responsive-min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css"><link rel="icon" mask="" sizes="any" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="Shortcut Icon" type="image/x-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="apple-touch-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="apple-touch-icon-precomposed" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="alternate" type="application/atom+xml" href="/atom.xml"><script type="text/javascript" src="//cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8385136408348258"></script><script src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script><script>(function(){
|
|
2
|
+
var bp = document.createElement('script');
|
|
3
|
+
var curProtocol = window.location.protocol.split(':')[0];
|
|
4
|
+
if (curProtocol === 'https'){
|
|
5
|
+
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
|
|
6
|
+
}
|
|
7
|
+
else{
|
|
8
|
+
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
|
|
9
|
+
}
|
|
10
|
+
var s = document.getElementsByTagName("script")[0];
|
|
11
|
+
s.parentNode.insertBefore(bp, s);
|
|
12
|
+
})();
|
|
13
|
+
</script><script>(function(){
|
|
14
|
+
var src = 'https://jspassport.ssl.qhimg.com/11.0.1.js?d182b3f28525f2db83acfaaf6e696dba';
|
|
15
|
+
document.write('<script src="' + src + '" id="sozz"><\/script>');
|
|
16
|
+
})();
|
|
17
|
+
</script><script>var _hmt=_hmt||[];(function(){var hm=document.createElement("script");hm.src='https://hm.baidu.com/hm.js?011f0b44e8452bfa57fbfa23c5fe7683';var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();
|
|
18
|
+
</script><script async src="https://www.googletagmanager.com/gtag/js?id=UA-150860401-1"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);};gtag('js',new Date());gtag('config','UA-150860401-1');
|
|
19
|
+
</script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/fixedPage.min.js"></script><meta name="generator" content="Hexo 6.3.0"></head><body><div class="body_container"><div id="header"><div class="site-name"><a id="logo" href="/.">前端壹菜鸟</a><p class="description">关注前端知识,收集精彩博文,做技术的搬运工</p></div><div id="nav-menu"><a class="current" href="/." target="_self"><i class="fa fa-home"> 首页</i></a><a href="/archives/" target="_self"><i class="fa fa-archive"> 归档</i></a><a href="/guestbook/" target="_self"><i class="fa fa-comments"> 留言</i></a><a href="/about/" target="_self"><i class="fa fa-user"> 关于</i></a><a href="https://laonongmin.online/" target="_target"><i class="fa fa-group"> 看看</i></a><a href="https://love.xuehuayu.cn/" target="_target"><i class="fa fa-heart"> LOVE</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title c-post">12个提高 JavaScript 技能的概念!</h1><div class="post-meta"><span class="date">2019-12-09</span><span> | </span><span class="tag"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载 </a></span><span> | </span><span class="category"><a href="/categories/%E5%89%8D%E7%AB%AF/">前端 </a></span><span id="busuanzi_container_page_pv"> | <span id="busuanzi_value_page_pv"><i class="fa fa-spinner"></i></span><span> 阅读</span></span><span class="post-time"><span class="post-meta-item-text"> | </span><span class="post-meta-item-icon"><i class="fa fa-keyboard-o"></i><span class="post-count"> 3.2k</span><span class="post-meta-item-text"> 字</span></span></span><span class="post-time"> | <span class="post-meta-item-icon"><i class="fa fa-hourglass-half"></i><span class="post-count"> 14</span><span class="post-meta-item-text"> 分钟</span></span></span></div><a class="disqus-comment-count" href="/article/31330.html#vcomment"><span class="waline-comment-count" data-path="/article/31330.html"></span><span> 条评论</span></a><div class="post-content"><p><code>原文地址:https://www.html.cn/web/javascript/14000.html</code></p>
|
|
20
|
+
<p>JavaScript 是一种复杂的语言。如果是你是高级或者初级 JavaScript 开发人员,了解它的基本概念非常重要。本文介绍 JavaScript 至关重要的<strong>12</strong>个概念,但绝对不是说 JavaScript 开发人员只需要知道这些就可以了。</p>
|
|
21
|
+
<span id="more"></span>
|
|
22
|
+
<p><img src="https://img.php.cn/upload/article/000/000/006/5dccbda2c71d1969.jpeg" alt="xuehuayu.cn"></p>
|
|
23
|
+
<h2 id="1-变量赋值-值-vs-引用)"><a href="#1-变量赋值-值-vs-引用)" class="headerlink" title="1.变量赋值 (值 vs 引用)"></a>1.变量赋值 (值 vs 引用)</h2><p>理解 JavaScript 如何给变量赋值可以帮助我们减少一些不必要的 <strong>bug</strong>。如果你不理解这一点,可能很容易地编写被无意中更改值的代码。</p>
|
|
24
|
+
<p>JavaScript 总是按照值来给变量赋值。 <strong>这一部分非常重要</strong>:当指定的值是 JavaScript 的五种基本类型之一(即 <code>Boolean</code>,<code>null</code>,<code>undefined</code>,<code>String</code> 和 <code>Number</code>)时,将分配实际值。 但是,当指定的值是 <code>Array</code>,<code>Function</code>或<code>Object</code>时,将分配对内存中对象的引用给变量。</p>
|
|
25
|
+
<p>在以下代码段中,使用 <code>var1</code> 对 <code>var2</code> 进行赋值。 由于<code>var1</code>是基本类型(String),因此 var2 的值等于 <code>var1</code> 的 String 值,并且可以认为此时与<code>var1</code>完全不同。 因此,重新赋值<code>var2</code>对<code>var1</code>没有影响。</p>
|
|
26
|
+
<pre><code>let var1 = 'My string';
|
|
27
|
+
let var2 = var1;
|
|
28
|
+
var2 = 'My new string';
|
|
29
|
+
console.log(var1);
|
|
30
|
+
// 'My string'
|
|
31
|
+
console.log(var2);
|
|
32
|
+
// 'My new string'
|
|
33
|
+
</code></pre>
|
|
34
|
+
<p>接着,与对象赋值进行比较。</p>
|
|
35
|
+
<pre><code>let var1 = { name: 'Jim' }
|
|
36
|
+
let var2 = var1;
|
|
37
|
+
var2.name = 'John';
|
|
38
|
+
console.log(var1);
|
|
39
|
+
// { name: 'John' }
|
|
40
|
+
console.log(var2);
|
|
41
|
+
// { name: 'John' }
|
|
42
|
+
</code></pre>
|
|
43
|
+
<p>如果你期望它会像原始类型赋值那样,很可能会出问题!如果你创建了一个无意中会改变对象的函数,就会出现一些非预期的行为。</p>
|
|
44
|
+
<h2 id="2-闭包"><a href="#2-闭包" class="headerlink" title="2.闭包"></a>2.闭包</h2><p>闭包是一个重要的JavaScript模式,可以私有访问变量。在本例中,<code>createGreeter</code>返回一个匿名函数,这个函数可以访问参数 <code>greeting</code>(在这里是“Hello”)。在后续的调用中,<code>sayHello</code> 将有权访问这个 greeting!</p>
|
|
45
|
+
<pre><code>function createGreeter(greeting) {
|
|
46
|
+
return function(name) {
|
|
47
|
+
console.log(greeting + ', ' + name);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const sayHello = createGreeter('Hello');
|
|
51
|
+
sayHello('Joe');
|
|
52
|
+
// Hello, Joe
|
|
53
|
+
</code></pre>
|
|
54
|
+
<p>在更真实的场景中,你可以设想一个初始函数<code>apiConnect(apiKey)</code>,它返回一些使用<code>API key</code>的方法。在这种情况下,<code>apiKey</code> 只需要提供一次即可。</p>
|
|
55
|
+
<pre><code>function apiConnect(apiKey) {
|
|
56
|
+
function get(route) {
|
|
57
|
+
return fetch(`${route}?key=${apiKey}`);
|
|
58
|
+
}
|
|
59
|
+
function post(route, params) {
|
|
60
|
+
return fetch(route, {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
body: JSON.stringify(params),
|
|
63
|
+
headers: {
|
|
64
|
+
'Authorization': `Bearer ${apiKey}`
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
return { get, post }
|
|
69
|
+
}
|
|
70
|
+
const api = apiConnect('my-secret-key');
|
|
71
|
+
// No need to include the apiKey anymore
|
|
72
|
+
api.get('http://www.example.com/get-endpoint');
|
|
73
|
+
api.post('http://www.example.com/post-endpoint', { name: 'Joe' });
|
|
74
|
+
</code></pre>
|
|
75
|
+
<h2 id="3-解构"><a href="#3-解构" class="headerlink" title="3.解构"></a>3.解构</h2><p>JavaScript 参数解构可以从对象中干中提取所需属性的常用方法。</p>
|
|
76
|
+
<pre><code>const obj = {
|
|
77
|
+
name: 'Joe',
|
|
78
|
+
food: 'cake'
|
|
79
|
+
}
|
|
80
|
+
const { name, food } = obj;
|
|
81
|
+
console.log(name, food);
|
|
82
|
+
// 'Joe' 'cake'
|
|
83
|
+
</code></pre>
|
|
84
|
+
<p>如果要以其他名称提取属性,可以使用如下方式:</p>
|
|
85
|
+
<pre><code>const obj = {
|
|
86
|
+
name: 'Joe',
|
|
87
|
+
food: 'cake'
|
|
88
|
+
}
|
|
89
|
+
const { name: myName, food: myFood } = obj;
|
|
90
|
+
console.log(myName, myFood);
|
|
91
|
+
// 'Joe' 'cake'
|
|
92
|
+
</code></pre>
|
|
93
|
+
<p>解构经常也用于直接用于提取传给函数的参数。如果你熟悉 React,可能已经见过这个:</p>
|
|
94
|
+
<pre><code>const person = {
|
|
95
|
+
name: 'Eddie',
|
|
96
|
+
age: 24
|
|
97
|
+
}
|
|
98
|
+
function introduce({ name, age }) {
|
|
99
|
+
console.log(`I'm ${name} and I'm ${age} years old!`);
|
|
100
|
+
}
|
|
101
|
+
console.log(introduce(person));
|
|
102
|
+
// "I'm Eddie and I'm 24 years old!"
|
|
103
|
+
</code></pre>
|
|
104
|
+
<h2 id="4-展开运算"><a href="#4-展开运算" class="headerlink" title="4. 展开运算"></a>4. 展开运算</h2><p>ES6的一个常用之一的特性就是展开(…)运算符了,在下面的例子中,<code>Math.max</code> 不能应用于 <code>arr</code> 数组,因为它不将数组作为参数,但它可以将各个元素作为参数传入。展开运算符<code>...</code>可用于提取数组的各个元素。</p>
|
|
105
|
+
<pre><code>const arr = [4, 6, -1, 3, 10, 4];
|
|
106
|
+
const max = Math.max(...arr);
|
|
107
|
+
console.log(max);
|
|
108
|
+
// 10
|
|
109
|
+
</code></pre>
|
|
110
|
+
<h2 id="5-剩余参数"><a href="#5-剩余参数" class="headerlink" title="5. 剩余参数"></a>5. 剩余参数</h2><p>剩余参数语法和展开语法看起来的一样的,不同的是展开语法是为了结构数组和对象;而剩余参数和展开运算符是相反的,剩余参数收集多个元素合成一个数组。</p>
|
|
111
|
+
<pre><code>function myFunc(...args) {
|
|
112
|
+
console.log(args[0] + args[1]);
|
|
113
|
+
}
|
|
114
|
+
myFunc(1, 2, 3, 4);
|
|
115
|
+
// 3
|
|
116
|
+
</code></pre>
|
|
117
|
+
<p><strong>rest parameters</strong> 和 <strong>arguments</strong> 的区别</p>
|
|
118
|
+
<ol>
|
|
119
|
+
<li>arguments 是伪数组,包含所有的实参</li>
|
|
120
|
+
<li>剩余参数 是标准的数组,可以使用数组的方法</li>
|
|
121
|
+
</ol>
|
|
122
|
+
<h2 id="6-数组方法"><a href="#6-数组方法" class="headerlink" title="6. 数组方法"></a>6. 数组方法</h2><p>JavaScript 数组方法通常可以提供令人难以置信的、优雅的方法来执行所需的数据转换。作为StackOverflow 的贡献者,我经常看到关于如何以某种方式操纵对象数组的问题,这往往也是数组方法的完美用例。</p>
|
|
123
|
+
<h4 id="map、filter、reduce"><a href="#map、filter、reduce" class="headerlink" title="map、filter、reduce"></a>map、filter、reduce</h4><p>JavaScript 数组方法<code>map</code>、<code>filter</code>和<code>reduce</code>容易混淆,这些都是转换数组或返回聚合值的有用方法。</p>
|
|
124
|
+
<p><strong>map:返回一个数组,其中每个元素都使用指定函数进行过转换。</strong></p>
|
|
125
|
+
<pre><code>const arr = [1, 2, 3, 4, 5, 6];
|
|
126
|
+
const mapped = arr.map(el => el + 20);
|
|
127
|
+
console.log(mapped);
|
|
128
|
+
// [21, 22, 23, 24, 25, 26]
|
|
129
|
+
</code></pre>
|
|
130
|
+
<p><strong>filter:返回一个数组,只有当指定函数返回 true 时,相应的元素才会被包含在这个数组中。</strong></p>
|
|
131
|
+
<pre><code>const arr = [1, 2, 3, 4, 5, 6];
|
|
132
|
+
const filtered = arr.filter(el => el === 2 || el === 4);
|
|
133
|
+
console.log(filtered);
|
|
134
|
+
// [2, 4]
|
|
135
|
+
</code></pre>
|
|
136
|
+
<p><strong>reduce:按函数中指定的值累加</strong></p>
|
|
137
|
+
<pre><code>const arr = [1, 2, 3, 4, 5, 6];
|
|
138
|
+
const reduced = arr.reduce((total, current) => total + current);
|
|
139
|
+
console.log(reduced);
|
|
140
|
+
// 21
|
|
141
|
+
</code></pre>
|
|
142
|
+
<h4 id="find-findIndex-indexOf"><a href="#find-findIndex-indexOf" class="headerlink" title="find, findIndex, indexOf"></a><strong>find, findIndex, indexOf</strong></h4><p><strong>find:返回与指定条件匹配的第一个实例,如果查到不会继续查找其他匹配的实例。</strong></p>
|
|
143
|
+
<pre><code>const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
144
|
+
const found = arr.find(el => el > 5);
|
|
145
|
+
console.log(found);
|
|
146
|
+
// 6
|
|
147
|
+
</code></pre>
|
|
148
|
+
<p><strong>再次注意</strong>,虽然<code>5</code>之后的所有元素都满足条件,但是只返回第一个匹配的元素。当你发现匹配项时,通常会中断<code>for</code>循环,在这种情况下,这实际上非常有用。</p>
|
|
149
|
+
<p><strong>findIndex</strong>:这与<code>find</code>几乎完全相同,但不是返回第一个匹配元素,而是返回第一个匹配元素的索引。</p>
|
|
150
|
+
<pre><code>const arr = ['Nick', 'Frank', 'Joe', 'Frank'];
|
|
151
|
+
const foundIndex = arr.findIndex(el => el === 'Frank');
|
|
152
|
+
console.log(foundIndex);
|
|
153
|
+
// 1
|
|
154
|
+
</code></pre>
|
|
155
|
+
<p><strong>indexOf</strong>:与<code>findIndex</code>几乎完全相同,但它不是将函数作为参数,而是采用一个简单的值。 当w你需要更简单的逻辑并且不需要使用函数来检查是否存在匹配时,可以使用此方法。</p>
|
|
156
|
+
<pre><code>const arr = ['Nick', 'Frank', 'Joe', 'Frank'];
|
|
157
|
+
const foundIndex = arr.indexOf('Frank');
|
|
158
|
+
console.log(foundIndex);
|
|
159
|
+
// 1
|
|
160
|
+
</code></pre>
|
|
161
|
+
<h4 id="push-pop-shift-unshift"><a href="#push-pop-shift-unshift" class="headerlink" title="push, pop, shift, unshift"></a><strong>push, pop, shift, unshift</strong></h4><p><strong>push</strong>:这是一个相对简单的方法,它将一个项添加到数组的末尾。它就地修改数组,函数本身会返回添加到数组中的项。</p>
|
|
162
|
+
<pre><code>let arr = [1, 2, 3, 4];
|
|
163
|
+
const pushed = arr.push(5);
|
|
164
|
+
console.log(arr);
|
|
165
|
+
// [1, 2, 3, 4, 5]
|
|
166
|
+
console.log(pushed);
|
|
167
|
+
// 5
|
|
168
|
+
</code></pre>
|
|
169
|
+
<p><strong>pop</strong>:这将从数组中删除最后一项。同样,它在适当的位置修改数组,函数本身返回从数组中删除的项。</p>
|
|
170
|
+
<pre><code>let arr = [1, 2, 3, 4];
|
|
171
|
+
const popped = arr.pop();
|
|
172
|
+
console.log(arr);
|
|
173
|
+
// [1, 2, 3]
|
|
174
|
+
console.log(popped);
|
|
175
|
+
// 4
|
|
176
|
+
</code></pre>
|
|
177
|
+
<p><strong>shift</strong>:从数组中删除第一项。同样,它在适当的位置修改数组。函数本身返回从数组中删除的项。</p>
|
|
178
|
+
<pre><code>let arr = [1, 2, 3, 4];
|
|
179
|
+
const shifted = arr.shift();
|
|
180
|
+
console.log(arr);
|
|
181
|
+
// [2, 3, 4]
|
|
182
|
+
console.log(shifted);
|
|
183
|
+
// 1
|
|
184
|
+
</code></pre>
|
|
185
|
+
<p><strong>unshift</strong>:将一个或多个元素添加到数组的开头。同样,它在适当的位置修改数组。与许多其他方法不同,函数本身返回数组的新长度。</p>
|
|
186
|
+
<pre><code>let arr = [1, 2, 3, 4];
|
|
187
|
+
const unshifted = arr.unshift(5, 6, 7);
|
|
188
|
+
console.log(arr);
|
|
189
|
+
// [5, 6, 7, 1, 2, 3, 4]
|
|
190
|
+
console.log(unshifted);
|
|
191
|
+
// 7
|
|
192
|
+
</code></pre>
|
|
193
|
+
<h4 id="splice-slice"><a href="#splice-slice" class="headerlink" title="splice, slice"></a><strong>splice, slice</strong></h4><p><strong>splice:</strong>通过删除或替换现有元素和/或添加新元素来更改数组的内容,此方法会修改了数组本身。</p>
|
|
194
|
+
<p>下面的代码示例的意思是:在数组的位置 <code>1</code> 上删除 <code>0</code> 个元素,并插入 <code>b</code>。</p>
|
|
195
|
+
<pre><code>let arr = ['a', 'c', 'd', 'e'];
|
|
196
|
+
arr.splice(1, 0, 'b')
|
|
197
|
+
</code></pre>
|
|
198
|
+
<p><strong>slice</strong>:从指定的起始位置和指定的结束位置之前返回数组的浅拷贝。 如果未指定结束位置,则返回数组的其余部分。 重要的是,此方法不会修改数组,而是返回所需的子集。</p>
|
|
199
|
+
<pre><code>let arr = ['a', 'b', 'c', 'd', 'e'];
|
|
200
|
+
const sliced = arr.slice(2, 4);
|
|
201
|
+
console.log(sliced);
|
|
202
|
+
// ['c', 'd']
|
|
203
|
+
console.log(arr);
|
|
204
|
+
// ['a', 'b', 'c', 'd', 'e']
|
|
205
|
+
</code></pre>
|
|
206
|
+
<h4 id="sort"><a href="#sort" class="headerlink" title="sort"></a><strong>sort</strong></h4><p><strong>sort:</strong>根据提供的函数对数组进行排序。这个方法就地修改数组。如果函数返回负数或 0,则顺序保持不变。如果返回正数,则交换元素顺序。</p>
|
|
207
|
+
<pre><code>let arr = [1, 7, 3, -1, 5, 7, 2];
|
|
208
|
+
const sorter = (firstEl, secondEl) => firstEl - secondEl;
|
|
209
|
+
arr.sort(sorter);
|
|
210
|
+
console.log(arr);
|
|
211
|
+
// [-1, 1, 2, 3, 5, 7, 7]
|
|
212
|
+
</code></pre>
|
|
213
|
+
<h2 id="7-Generators-生成器"><a href="#7-Generators-生成器" class="headerlink" title="7. Generators(生成器)"></a>7. Generators(生成器)</h2><p>生成器是一种特殊的行为,实际上是一种设计模式,我们通过调用**next()<strong>方法来遍历一组有序的值。想象一下,例如使用遍历器对数组<code>[1,2,3,4,5]</code>进行遍历。第一次调用</strong>next()<strong>方法返回<code>1</code>,第二次调用</strong>next()<strong>方法返回<code>2</code>,以此类推。当数组中的所有值都返回后,调用</strong>next()**方法将返回<code>null</code>或<code>false</code>或其它可能的值用来表示数组中的所有元素都已遍历完毕。</p>
|
|
214
|
+
<pre><code>function* greeter() {
|
|
215
|
+
yield 'Hi';
|
|
216
|
+
yield 'How are you?';
|
|
217
|
+
yield 'Bye';
|
|
218
|
+
}
|
|
219
|
+
const greet = greeter();
|
|
220
|
+
console.log(greet.next().value);
|
|
221
|
+
// 'Hi'
|
|
222
|
+
console.log(greet.next().value);
|
|
223
|
+
// 'How are you?'
|
|
224
|
+
console.log(greet.next().value);
|
|
225
|
+
// 'Bye'
|
|
226
|
+
console.log(greet.next().value);
|
|
227
|
+
// undefined
|
|
228
|
+
</code></pre>
|
|
229
|
+
<p>使用生成器生成无限个值:</p>
|
|
230
|
+
<pre><code>function* idCreator() {
|
|
231
|
+
let i = 0;
|
|
232
|
+
while (true)
|
|
233
|
+
yield i++;
|
|
234
|
+
}
|
|
235
|
+
const ids = idCreator();
|
|
236
|
+
console.log(ids.next().value);
|
|
237
|
+
// 0
|
|
238
|
+
console.log(ids.next().value);
|
|
239
|
+
// 1
|
|
240
|
+
console.log(ids.next().value);
|
|
241
|
+
// 2
|
|
242
|
+
// etc...
|
|
243
|
+
</code></pre>
|
|
244
|
+
<h2 id="8-恒等运算符-x3D-x3D-x3D-与相等运算符-x3D-x3D"><a href="#8-恒等运算符-x3D-x3D-x3D-与相等运算符-x3D-x3D" class="headerlink" title="8.恒等运算符(===)与相等运算符(==)"></a>8.恒等运算符(===)与相等运算符(==)</h2><p>大家一定要知道JavaScript中的恒等运算符(<code>===</code>)和相等运算符(<code>==</code>)之间的区别! <code>==</code>运算符在比较值之前会进行类型转换,而<code>===</code>运算符在比较之前不会进行任何类型转换。</p>
|
|
245
|
+
<pre><code>console.log(0 == '0');
|
|
246
|
+
// true
|
|
247
|
+
console.log(0 === '0');
|
|
248
|
+
// false
|
|
249
|
+
</code></pre>
|
|
250
|
+
<h2 id="9-对象比较"><a href="#9-对象比较" class="headerlink" title="9. 对象比较"></a>9. 对象比较</h2><p>我看到 JavaScript新手所犯的错误是直接比较对象。 变量指向内存中对象的引用,而不是对象本身! 实际比较它们的一种方法是将对象转换为 JSON 字符串。 这有一个缺点:对象属性顺序不能保证! 比较对象的一种更安全的方法是引入专门进行深度对象比较的库(例如,lodash的isEqual)。</p>
|
|
251
|
+
<p>下面的对象看起来是相等的,但实际上它们指向不同的引用。</p>
|
|
252
|
+
<pre><code>const joe1 = { name: 'Joe' };
|
|
253
|
+
const joe2 = { name: 'Joe' };
|
|
254
|
+
console.log(joe1 === joe2);
|
|
255
|
+
// false
|
|
256
|
+
</code></pre>
|
|
257
|
+
<p>相反,下面的计算结果为<code>true</code>,因为一个对象被设置为与另一个对象相等,因此指向相同的引用(内存中只有一个对象)。</p>
|
|
258
|
+
<pre><code>const joe1 = { name: 'Joe' };
|
|
259
|
+
const joe2 = joe1;
|
|
260
|
+
console.log(joe1 === joe2);
|
|
261
|
+
// true
|
|
262
|
+
</code></pre>
|
|
263
|
+
<p>相反,以下计算结果为<code>true</code>,因为一个对象设置为等于另一个对象,因此指向相同的引用(内存中只有一个对象)。</p>
|
|
264
|
+
<pre><code>const joe1 = { name: 'Joe' };
|
|
265
|
+
const joe2 = joe1;
|
|
266
|
+
console.log(joe1 === joe2);
|
|
267
|
+
// true
|
|
268
|
+
</code></pre>
|
|
269
|
+
<h2 id="10-回调函数"><a href="#10-回调函数" class="headerlink" title="10. 回调函数"></a>10. 回调函数</h2><p>很多人都被 JavaScript 回调函数吓倒了! 他们很简单,举个例子。 <code>console.log</code> 函数作为回调传递给<code>myFunc</code>。 它在<code>setTimeout</code>完成时执行。</p>
|
|
270
|
+
<pre><code>function myFunc(text, callback) {
|
|
271
|
+
setTimeout(function() {
|
|
272
|
+
callback(text);
|
|
273
|
+
}, 2000);
|
|
274
|
+
}
|
|
275
|
+
myFunc('Hello world!', console.log);
|
|
276
|
+
// 'Hello world!'
|
|
277
|
+
</code></pre>
|
|
278
|
+
<h2 id="11-Promises"><a href="#11-Promises" class="headerlink" title="11. Promises"></a>11. Promises</h2><p>一旦你理解了 JavaScript 回调,很快就会发现自己陷入了“回调地狱”中。这个时候可以使用 promise,将异步逻辑包装在 promise 中,成功时 <code>resolve</code> 或在失败时<code>reject</code> 使用“then”来处理成功的情况,使用<code>catch</code>来处理异常。</p>
|
|
279
|
+
<pre><code>const myPromise = new Promise(function(res, rej) {
|
|
280
|
+
setTimeout(function(){
|
|
281
|
+
if (Math.random() < 0.9) {
|
|
282
|
+
return res('Hooray!');
|
|
283
|
+
}
|
|
284
|
+
return rej('Oh no!');
|
|
285
|
+
}, 1000);
|
|
286
|
+
});
|
|
287
|
+
myPromise
|
|
288
|
+
.then(function(data) {
|
|
289
|
+
console.log('Success: ' + data);
|
|
290
|
+
})
|
|
291
|
+
.catch(function(err) {
|
|
292
|
+
console.log('Error: ' + err);
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
// If Math.random() returns less than 0.9 the following is logged:
|
|
296
|
+
// "Success: Hooray!"
|
|
297
|
+
// If Math.random() returns 0.9 or greater the following is logged:
|
|
298
|
+
// "Error: On no!"
|
|
299
|
+
</code></pre>
|
|
300
|
+
<h2 id="12-Async-x2F-Await"><a href="#12-Async-x2F-Await" class="headerlink" title="12. Async/Await"></a>12. Async/Await</h2><p>在掌握了 promise 的用法后,你可能也会喜欢 <code>async await</code>,它只是一种基于 promise 的“语法糖”。在下面的示例中,我们创建了一个 <code>async</code> 函数,并 await greeter promise。</p>
|
|
301
|
+
<pre><code>const greeter = new Promise((res, rej) => {
|
|
302
|
+
setTimeout(() => res('Hello world!'), 2000);
|
|
303
|
+
})
|
|
304
|
+
async function myFunc() {
|
|
305
|
+
const greeting = await greeter;
|
|
306
|
+
console.log(greeting);
|
|
307
|
+
}
|
|
308
|
+
myFunc();
|
|
309
|
+
// 'Hello world!'
|
|
310
|
+
</code></pre>
|
|
311
|
+
<h2 id="结论"><a href="#结论" class="headerlink" title="结论"></a>结论</h2><p>如果您不知道这12个概念中的任何一个,那么您可能至少对JavaScript有了一点了解!而且,如果您了解所有这些知识,那么希望这是一次练习和增进知识的机会。</p>
|
|
312
|
+
<p><code>原文地址:https://hackernoon.com/12-javascript-concepts-that-will-level-up-your-development-skills-b37d16ad7104</code></p>
|
|
313
|
+
<p><strong>为了保证的可读性,本文采用意译而非直译。</strong></p>
|
|
314
|
+
<p>以上就是12个提高 JavaScript 技能的概念!的详细内容,更多请关注html中文网其它相关文章!</p>
|
|
315
|
+
</div><iframe src="/donate/?AliPayQR=https://store.xuehuayu.cn/store/public/alipay_qr.jpg&WeChatQR=https://store.xuehuayu.cn/store/public/wechat_qr.png&UnionPayQR=null&GitHub=null&BTCQR=null&BTCKEY=null&PayPal=https://www.paypal.com/paypalme/OrdinaryPerson" style="overflow-x:hidden; overflow-y:hidden; border:0xp none #fff; min-height:240px; width:100%;" frameborder="0" scrolling="no"></iframe><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者:</strong>雪花雨</li><li class="post-copyright-link"><strong>本文链接:</strong><a href="/article/31330.html">https://xuehuayu.cn/article/31330.html</a></li><li class="post-copyright-license"><strong>版权声明:</strong>① 标为原创的文章为博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接。② 转载文章来自网络,已标明出处,<a href="mailto:cainiaoblog@126.com">侵删</a>。</li></ul></div><br><div class="tags"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载</a></div><div class="post-nav"><a class="pre" href="/article/40964.html">Promise的三兄弟:all(), race()以及allSettled()</a><a class="next" href="/article/20021.html">如何在 JS 循环中正确使用 async 与 await</a></div><div id="vcomment"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.min.css"><script src="//cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.js"></script><script>const origin = window.location.origin
|
|
316
|
+
const serverURL = origin.includes('cainiaoblog') ? 'https://cmts.cainiaoblog.cn' : 'https://cmts.xuehuayu.cn'
|
|
317
|
+
const locale = {
|
|
318
|
+
placeholder: '请正确填写昵称和邮箱,方便接收回复通知~',
|
|
319
|
+
sofa: '沙发空缺中,还不快抢~',
|
|
320
|
+
};
|
|
321
|
+
Waline.init({
|
|
322
|
+
el: '#vcomment',
|
|
323
|
+
serverURL: serverURL,
|
|
324
|
+
pageSize: '20',
|
|
325
|
+
visitor: true, // 阅读量统计
|
|
326
|
+
requiredMeta: ['nick', 'mail'],
|
|
327
|
+
emoji: [
|
|
328
|
+
'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/weibo',
|
|
329
|
+
'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/qq',
|
|
330
|
+
'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/tw-emoji',
|
|
331
|
+
],
|
|
332
|
+
locale,
|
|
333
|
+
pageview: true
|
|
334
|
+
})
|
|
335
|
+
</script></div></div></div><div class="pure-u-1 pure-u-md-1-4 fixed-search hidden_mid_and_down"><div id="sidebar"><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/search.min.js"></script><div class="widget"><div class="widget-search"><input class="search" type="radio" name="search" value="baidu" id="baidu" checked="checked"/><label class="label" for="baidu" title="百度全站搜索">百度</label><input class="search" type="radio" name="search" value="google" id="google"/><label class="label" for="google" title="谷歌全站搜索">谷歌</label><input class="search" type="radio" name="search" value="self" id="self"/><label class="label" for="self" title="使用站内搜索">站内</label></div><div class="widget" id="search"><form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"/><input type="hidden" name="si" value="xuehuayu.cn"/><input type="hidden" name="cl" value="3"/><input type="hidden" name="ct" value="2097152"/><input type="hidden" name="s" value="on"/><input class="search-submit" type="submit" value=""/></form></div></div><script>$('input[type=radio][name=search]').change(function() {
|
|
336
|
+
var val = $(this).val()
|
|
337
|
+
var self = '<div class="search-form"><input id="local-search-input" placeholder="站内搜索,首次慢" type="search" name="q" results="0"><input class="search-submit" type="submit" value=""/><div id="local-search-result"></div></div>'
|
|
338
|
+
var google = '<form class="search-form" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="q" maxlength="30" placeholder="谷歌全站搜索"><input type="hidden" name="sitesearch" value="xuehuayu.cn"><input class="search-submit" type="submit" value=""/></form>'
|
|
339
|
+
var baidu = '<form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"><input type="hidden" name="si" value="xuehuayu.cn"><input type="hidden" name="cl" value="3"><input type="hidden" name="ct" value="2097152"><input type="hidden" name="s" value="on"><input class="search-submit" type="submit" value=""/></form>'
|
|
340
|
+
|
|
341
|
+
if (val === 'self') {
|
|
342
|
+
$('#search').html(self)
|
|
343
|
+
var search_path = 'search.xml';
|
|
344
|
+
if (search_path.length == 0) {
|
|
345
|
+
search_path = 'search.xml';
|
|
346
|
+
}
|
|
347
|
+
var path = 'https://cdn.staticaly.com/gh/npljy/npljy.github.io/main/' + search_path;
|
|
348
|
+
searchFunc(path, 'local-search-input', 'local-search-result');
|
|
349
|
+
} else if (val === 'baidu') {
|
|
350
|
+
$('#search').html(baidu)
|
|
351
|
+
} else if (val === 'google') {
|
|
352
|
+
$('#search').html(google)
|
|
353
|
+
}
|
|
354
|
+
})</script><div class="widget widget-wxmp"><img alt="微信公众号" width="100%" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/mp-mini.jpg"/></div><div class="widget widget-categories"><div class="widget-title"><i class="fa fa-folder-o"> 分类</i></div><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/CDN/">CDN</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/IDE/">IDE</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/git/">git</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/hexo/">hexo</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%85%AC%E5%85%B1%E8%8A%82%E6%97%A5/">公共节日</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%88%86%E4%BA%AB/">分享</a><span class="category-list-count">29</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/">前端</a><span class="category-list-count">191</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">1</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/">网络协议</a><span class="category-list-count">1</span></li></ul></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%8D%9A%E5%AE%A2/">博客</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B7%A5%E5%85%B7/">工具</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/">广告过滤</a><span class="category-list-count">8</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/%E8%A7%86%E9%A2%91%E7%94%B5%E8%A7%86%E5%B0%8F%E8%AF%B4%E6%BC%AB%E7%94%BB%E8%B5%84%E8%AE%AF%E9%9F%B3%E4%B9%90/">视频电视小说漫画资讯音乐</a><span class="category-list-count">2</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%AD%A3%E5%88%99/">正则</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E7%AE%97%E6%B3%95/">算法</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%B5%84%E8%AE%AF/">资讯</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%BD%BB%E6%9D%BE%E4%B8%80%E5%88%BB/">轻松一刻</a><span class="category-list-count">1</span></li></ul></div><div class="widget widget-tags"><div class="widget-title"><i class="fa fa-star-o"> 标签</i></div><div class="tagcloud"><a href="/tags/%E5%8E%9F%E5%88%9B/" style="font-size: 15px;">原创</a> <a href="/tags/%E8%BD%AC%E8%BD%BD/" style="font-size: 15px;">转载</a> <a href="/tags/%E6%89%8B%E5%86%99/" style="font-size: 15px;">手写</a> <a href="/tags/%E7%96%AB%E6%83%85/" style="font-size: 15px;">疫情</a> <a href="/tags/%E5%A8%B1%E4%B9%90/" style="font-size: 15px;">娱乐</a></div></div><div class="widget widget-recent-posts"><div class="widget-title"><i class="fa fa-file-o"> 最近文章</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/article/c5576490.html">面试准备</a></li><li class="post-list-item"><a class="post-list-link" href="/article/84c9ccd6.html">精读《SolidJS》</a></li><li class="post-list-item"><a class="post-list-link" href="/article/53803e6.html">git提交注释规范</a></li><li class="post-list-item"><a class="post-list-link" href="/article/a4145266.html">前端数组拍平flat一行代码</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bedea419.html">一道前端this面试题</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bf7e7421.html">git多账号配置</a></li></ul></div><div class="widget widget-links"><div class="widget-title"><i class="fa fa-external-link"> 友情链接</i></div><ul></ul><a href="https://github.com/npljy?utm_source=xuehuayu.cn" title="GitHub" target="_blank">GitHub</a><ul></ul><a href="https://laonongmin.online?utm_source=xuehuayu.cn" title="看看" target="_blank">看看</a><ul></ul><a href="https://cainiaoblog.cn?utm_source=xuehuayu.cn" title="菜鸟博客" target="_blank">菜鸟博客</a><ul></ul><a href="mailto:cainiaoblog@126.com" title="友链联系" target="_blank">友链联系</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer"><div class="flex-block justify-center align-center flex-wrap"><a class="gxba-link" id="gxba" rel="nofollow" target="_blank" href="http://beian.miit.gov.cn/">京ICP备20007647号-2</a><a class="gaba-link" id="gaba-link" rel="nofollow" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031264"><img class="nofancybox" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/gaba.png" alt=""/><span id="gaba">京公网安备 11010802031264号</span><span style="padding-right: 10px;"></span></a><span>Copyright © 2023 </span><a href="/." rel="nofollow">前端壹菜鸟. </a><script>(function(){
|
|
355
|
+
var cnb =window.location.origin.indexOf('cainiaoblog') !==-1
|
|
356
|
+
if (cnb) {
|
|
357
|
+
var gxba =document.getElementById('gxba')
|
|
358
|
+
var gaba =document.getElementById('gaba')
|
|
359
|
+
var gabaLink =document.getElementById('gaba-link')
|
|
360
|
+
gxba.innerText ='京ICP备20007647号-1'
|
|
361
|
+
gaba.innerText ='京公网安备 11010802031254号'
|
|
362
|
+
gabaLink.setAttribute('href','http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031254')
|
|
363
|
+
}
|
|
364
|
+
})()</script></div><div class="flex-block justify-center align-center flex-wrap"><a rel="nofollow" target="_blank" href="https://v6.51.la/s/Guz3lwHCsVme9Cu"><div class="busuanzi_container" id="busuanzi_container"><span class="busuanzi_container_site_pv" id="busuanzi_container_site_pv">访问量:<span id="busuanzi_value_site_pv"><i class="fa fa-spinner"></i></span></span><span class="busuanzi_container_site_uv" id="busuanzi_container_site_uv">访客数:<span id="busuanzi_value_site_uv"><i class="fa fa-spinner"></i></span></span><span style="padding-right: 10px;"></span></div></a><a rel="nofollow" target="_blank" href="https://www.upyun.com/?utm_source=lianmeng&utm_medium=referral"><span style="font-weight:bold;letter-spacing: 1px;">本网站由 </span><img class="nofancybox" height="32" style="vertical-align: middle" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/upy_logo.min.svg" alt=""/><span style="font-weight:bold;letter-spacing: 1px;">提供CDN加速/云存储服务</span></a><span style="padding-right: 10px;"></span><a rel="nofollow" style="font-size:18px;font-weight:bold;vertical-align: middle" target="_blank" title="注册就送代金券可直接使用" href="https://console.upyun.com/register/?invite=HyDsjZHIL">注册</a></div></div></div></div><a class="show" id="rocket" href="#top"></a><div class="darkmode-toggle">🌓</div><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/totop.min.js" async></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/dark.min.js" async></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/codeblock-resizer.min.js"></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/smartresize.min.js"></script></div></body></html>
|