PageSourceSearch

https://hunghg255.github.io/blog

html hunghg255.github.io collected 2026-10-03 09:18:52 UTC 59,004 bytes, 1 lines download raw bytes

1<!DOCTYPE html><html lang="vi"><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><meta property="og:type" content="website"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="title" content="Hunghg | Front-end Developer"/><meta name="description" content="I&#x27;m Hung an Front-end Developer. I got a bachelor of Electronics Telecommunication Engineering at Ha Noi University of Science and Technology (2015 - 2020)"/><meta property="og:type" content="website"/><meta property="og:url" content="https://hunghg.vercel.app/"/><meta property="og:title" content="Hunghg | Front-end Developer"/><meta property="og:description" content="I&#x27;m Hung an Front-end Developer. I got a bachelor of Electronics Telecommunication Engineering at Ha Noi University of Science and Technology (2015 - 2020)"/><meta property="og:image" content="https://cdn.jsdelivr.net/gh/hunghg255/static/og-img.png"/><meta property="twitter:card" content="summary_large_image"/><meta property="twitter:url" content="https://hunghg.vercel.app/"/><meta property="twitter:title" content="Hunghg | Front-end Developer"/><meta property="twitter:description" content="I&#x27;m Hung an Front-end Developer. I got a bachelor of Electronics Telecommunication Engineering at Ha Noi University of Science and Technology (2015 - 2020)"/><meta property="twitter:image" content="https://cdn.jsdelivr.net/gh/hunghg255/static/og-img.png"/><meta property="og:image:type" content="image/jpeg"/><title>Blogs</title><meta name="next-head-count" content="18"/><link rel="preload" href="./_next/static/css/42b8048d1298442b.css" as="style"/><link rel="stylesheet" href="./_next/static/css/42b8048d1298442b.css" data-n-g=""/><link rel="preload" href="./_next/static/css/de6ce21e6557c903.css" as="style"/><link rel="stylesheet" href="./_next/static/css/de6ce21e6557c903.css" data-n-p=""/><noscript data-n-css=""></noscript>
1<script defer="" nomodule="" src="./_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script>
1<script src="./_next/static/chunks/webpack-cbcddb0f8205a4a9.js" defer=""></script>
1<script src="./_next/static/chunks/framework-6698976aa0ea586d.js" defer=""></script>
1<script src="./_next/static/chunks/main-4e45297b647010e6.js" defer=""></script>
1<script src="./_next/static/chunks/pages/_app-3be9a7aee1a48be5.js" defer=""></script>
1<script src="./_next/static/chunks/12-2c086d67d3ef41c4.js" defer=""></script>
1<script src="./_next/static/chunks/pages/blog-eb19758c04268883.js" defer=""></script>
1<script src="./_next/static/puAQ5Og02pNCGviZXgk3B/_buildManifest.js" defer=""></script>
1<script src="./_next/static/puAQ5Og02pNCGviZXgk3B/_ssgManifest.js" defer=""></script>
1</head><body><div id="__next"><div class="Wrapper" id="header"><nav class="Navbar_navBar__h81mJ"><div class="container"><ul class="Navbar_navList__YpOkh"><li class="Navbar_navItem__Vns02 Navbar_navItemLogo__iWnXn"><span style="position:relative;display:inline-block"><span class="Sparkles_svgWrap__HzKAz" style="position:absolute;top:19%;left:76%;z-index:2"><svg width="19" height="19" viewBox="0 0 68 68" fill="none" style="position:absolute;top:19%;left:76%;z-index:2" class="Sparkles_svg__Tz5Nx"><path d="M26.5 25.5C19.0043 33.3697 0 34 0 34C0 34 19.1013 35.3684 26.5 43.5C33.234 50.901 34 68 34 68C34 68 36.9884 50.7065 44.5 43.5C51.6431 36.647 68 34 68 34C68 34 51.6947 32.0939 44.5 25.5C36.5605 18.2235 34 0 34 0C34 0 33.6591 17.9837 26.5 25.5Z" fill="#7764ed"></path></svg></span><span class="Sparkles_svgWrap__HzKAz" style="position:absolute;top:47%;left:25%;z-index:2"><svg width="27" height="27" viewBox="0 0 68 68" fill="none" style="position:absolute;top:47%;left:25%;z-index:2" class="Sparkles_svg__Tz5Nx"><path d="M26.5 25.5C19.0043 33.3697 0 34 0 34C0 34 19.1013 35.3684 26.5 43.5C33.234 50.901 34 68 34 68C34 68 36.9884 50.7065 44.5 43.5C51.6431 36.647 68 34 68 34C68 34 51.6947 32.0939 44.5 25.5C36.5605 18.2235 34 0 34 0C34 0 33.6591 17.9837 26.5 25.5Z" fill="#06c270"></path></svg></span><span class="Sparkles_svgWrap__HzKAz" style="position:absolute;top:61%;left:41%;z-index:2"><svg width="22" height="22" viewBox="0 0 68 68" fill="none" style="position:absolute;top:61%;left:41%;z-index:2" class="Sparkles_svg__Tz5Nx"><path d="M26.5 25.5C19.0043 33.3697 0 34 0 34C0 34 19.1013 35.3684 26.5 43.5C33.234 50.901 34 68 34 68C34 68 36.9884 50.7065 44.5 43.5C51.6431 36.647 68 34 68 34C68 34 51.6947 32.0939 44.5 25.5C36.5605 18.2235 34 0 34 0C34 0 33.6591 17.9837 26.5 25.5Z" fill="#ffc24e"></path></svg></span><strong style="position:relative;z-index:1;font-weight:bold"><div class="icon-logo"><svg viewBox="0 0 304 304" width="60" fill="none"><path class="logo_circle__6ao4W" d="M7 152C7 71.88 71.88 7 152 7c80.01 0 145 64.88 145 145 0 80.01-64.88 145-145 145C71.99 297 7 232.01 7 152Z" stroke-width="14"></path><path class="logo_letters__1_W2_" d="M134.53 76v111.49a35.08 35.08 0 0 1-35.21 35.01C79.83 222.5 64 206.76 64 187.49c0-19.27 15.83-35.1 35.32-35.1h30.22l40.98.09h34.26c19.48 0 35.22-16.6 35.22-35.97a35.08 35.08 0 0 0-35.22-35.01c-19.48 0-35.22 15.74-35.22 35.01V229" stroke-width="12"></path></svg></div></strong></span></li><li class="Navbar_navItem__Vns02"><a aria-label="Projects" href="/projects">Projects</a></li><li class="Navbar_navItem__Vns02"><a aria-label="Blog" href="/blog">Blog</a></li><li class="Navbar_navItem__Vns02"><a href="https://github.com/hunghg255" target="_blank" rel="noreferrer" aria-label="Github"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M10.07 20.503a1 1 0 0 0-1.18-.983c-1.31.24-2.963.276-3.402-.958a5.708 5.708 0 0 0-1.837-2.415a1.2 1.2 0 0 1-.167-.11a1 1 0 0 0-.93-.645h-.005a1 1 0 0 0-1 .995c-.004.815.81 1.338 1.141 1.514a4.44 4.44 0 0 1 .924 1.36c.365 1.023 1.423 2.576 4.466 2.376l.003.098l.004.268a1 1 0 0 0 2 0l-.005-.318c-.005-.19-.012-.464-.012-1.182ZM20.737 5.377a5.39 5.39 0 0 0 .09-.42a6.278 6.278 0 0 0-.408-3.293a1.002 1.002 0 0 0-.615-.58c-.356-.12-1.67-.357-4.184 1.25a13.87 13.87 0 0 0-6.354 0C6.762.75 5.455.966 5.102 1.079a.997.997 0 0 0-.631.584a6.3 6.3 0 0 0-.404 3.357c.025.127.051.246.079.354a6.27 6.27 0 0 0-1.256 3.83a8.422 8.422 0 0 0 .043.921c.334 4.603 3.334 5.984 5.424 6.459a4.591 4.591 0 0 0-.118.4a1 1 0 0 0 1.942.479a1.678 1.678 0 0 1 .468-.878a1 1 0 0 0-.546-1.745c-3.454-.395-4.954-1.802-5.18-4.899a6.61 6.61 0 0 1-.033-.738a4.258 4.258 0 0 1 .92-2.713a3.022 3.022 0 0 1 .195-.231a1 1 0 0 0 .188-1.025a3.388 3.388 0 0 1-.155-.555a4.094 4.094 0 0 1 .079-1.616a7.543 7.543 0 0 1 2.415 1.18a1.009 1.009 0 0 0 .827.133a11.777 11.777 0 0 1 6.173.001a1.005 1.005 0 0 0 .83-.138a7.572 7.572 0 0 1 2.406-1.19a4.04 4.04 0 0 1 .087 1.578a3.205 3.205 0 0 1-.169.607a1 1 0 0 0 .188 1.025c.078.087.155.18.224.268A4.122 4.122 0 0 1 20 9.203a7.039 7.039 0 0 1-.038.777c-.22 3.056-1.725 4.464-5.195 4.86a1 1 0 0 0-.546 1.746a1.63 1.63 0 0 1 .466.908a3.06 3.06 0 0 1 .093.82v2.333c-.01.648-.01 1.133-.01 1.356a1 1 0 1 0 2 0c0-.217 0-.692.01-1.34v-2.35a4.881 4.881 0 0 0-.155-1.311a4.256 4.256 0 0 0-.116-.416a6.513 6.513 0 0 0 5.445-6.424A8.697 8.697 0 0 0 22 9.203a6.13 6.13 0 0 0-1.263-3.826Z"></path></svg></a></li><li class="Navbar_navItem__Vns02"><a href="https://twitter.com/hunghg255" target="_blank" rel="noreferrer" aria-label="Twitter"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 15 15">
1<path fill="currentColor" d="m14.478 1.5l.5-.033a.5.5 0 0 0-.871-.301l.371.334Zm-.498 2.959a.5.5 0 1 0-1 0h1Zm-6.49.082h-.5h.5Zm0 .959h.5h-.5Zm-6.99 7V12a.5.5 0 0 0-.278.916L.5 12.5Zm.998-11l.469-.175a.5.5 0 0 0-.916-.048l.447.223Zm3.994 9l.354.353a.5.5 0 0 0-.195-.827l-.159.474Zm7.224-8.027l-.37.336l.18.199l.265-.04l-.075-.495Zm1.264-.94c.051.778.003 1.25-.123 1.606c-.122.345-.336.629-.723 1l.692.722c.438-.42.776-.832.974-1.388c.193-.546.232-1.178.177-2.006l-.998.066Zm0 3.654V4.46h-1v.728h1Zm-6.99-.646V5.5h1v-.959h-1Zm0 .959V6h1v-.5h-1ZM10.525 1a3.539 3.539 0 0 0-3.537 3.541h1A2.539 2.539 0 0 1 10.526 2V1Zm2.454 4.187C12.98 9.503 9.487 13 5.18 13v1c4.86 0 8.8-3.946 8.8-8.813h-1ZM1.03 1.675C1.574 3.127 3.614 6 7.49 6V5C4.174 5 2.421 2.54 1.966 1.325l-.937.35Zm.021-.398C.004 3.373-.157 5.407.604 7.139c.759 1.727 2.392 3.055 4.73 3.835l.317-.948c-2.155-.72-3.518-1.892-4.132-3.29c-.612-1.393-.523-3.11.427-5.013l-.895-.446Zm4.087 8.87C4.536 10.75 2.726 12 .5 12v1c2.566 0 4.617-1.416 5.346-2.147l-.708-.706Zm7.949-8.009A3.445 3.445 0 0 0 10.526 1v1c.721 0 1.37.311 1.82.809l.74-.671Zm-.296.83a3.513 3.513 0 0 0 2.06-1.134l-.744-.668a2.514 2.514 0 0 1-1.466.813l.15.989ZM.222 12.916C1.863 14.01 3.583 14 5.18 14v-1c-1.63 0-3.048-.011-4.402-.916l-.556.832Z"></path></svg></a></li><li class="Navbar_navItem__Vns02"><a aria-label="RSS" href="/sitemap-0.xml"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><g fill="currentColor"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path><path d="M5.5 12a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0a8 8 0 0 0-8-8a1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1a6 6 0 0 1 6 6a1 1 0 1 1-2 0a4 4 0 0 0-4-4a1 1 0 0 1-1-1z"></path></g></svg></a></li><li class="Navbar_navItem__Vns02"><div class="CheckboxIos_checkboxIos__jpLKA"><input type="checkbox" id="cbios-2" class="CheckboxIos_cbios__hcuCl"/><label for="cbios-2" class="CheckboxIos_cbiosLabel__nv728"><span class="CheckboxIos_btnToggleCircle__rNEGr"><span class="CheckboxIos_btnCircle__EMWxa CheckboxIos_circle1__MxklN"></span><span class="CheckboxIos_btnCircle__EMWxa CheckboxIos_circle2__XItVC"></span><span class="CheckboxIos_btnCircle__EMWxa CheckboxIos_circle3__IMgsu"></span></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star1__11ScE"></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star2__aZWUu"></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star3__x4zQX"></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star4__pQU4z"></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star5__PQOGK"></span></label></div></li></ul></div></nav><nav class="SideDraw_navSideDraw__fN7x7 "><div class="container"><ul class="SideDraw_navSideDrawList__7dW_Q"><li class="undefined SideDraw_navSideDrawLogo__OjlDj"><span style="position:relative;display:inline-block"><span class="Sparkles_svgWrap__HzKAz" style="position:absolute;top:4%;left:56%;z-index:2"><svg width="24" height="24" viewBox="0 0 68 68" fill="none" style="position:absolute;top:4%;left:56%;z-index:2" class="Sparkles_svg__Tz5Nx"><path d="M26.5 25.5C19.0043 33.3697 0 34 0 34C0 34 19.1013 35.3684 26.5 43.5C33.234 50.901 34 68 34 68C34 68 36.9884 50.7065 44.5 43.5C51.6431 36.647 68 34 68 34C68 34 51.6947 32.0939 44.5 25.5C36.5605 18.2235 34 0 34 0C34 0 33.6591 17.9837 26.5 25.5Z" fill="#476055"></path></svg></span><span class="Sparkles_svgWrap__HzKAz" style="position:absolute;top:10%;left:22%;z-index:2"><svg width="24" height="24" viewBox="0 0 68 68" fill="none" style="position:absolute;top:10%;left:22%;z-index:2" class="Sparkles_svg__Tz5Nx"><path d="M26.5 25.5C19.0043 33.3697 0 34 0 34C0 34 19.1013 35.3684 26.5 43.5C33.234 50.901 34 68 34 68C34 68 36.9884 50.7065 44.5 43.5C51.6431 36.647 68 34 68 34C68 34 51.6947 32.0939 44.5 25.5C36.5605 18.2235 34 0 34 0C34 0 33.6591 17.9837 26.5 25.5Z" fill="#7764ed"></path></svg></span><span class="Sparkles_svgWrap__HzKAz" style="position:absolute;top:73%;left:91%;z-index:2"><svg width="20" height="20" viewBox="0 0 68 68" fill="none" style="position:absolute;top:73%;left:91%;z-index:2" class="Sparkles_svg__Tz5Nx"><path d="M26.5 25.5C19.0043 33.3697 0 34 0 34C0 34 19.1013 35.3684 26.5 43.5C33.234 50.901 34 68 34 
168C34 68 36.9884 50.7065 44.5 43.5C51.6431 36.647 68 34 68 34C68 34 51.6947 32.0939 44.5 25.5C36.5605 18.2235 34 0 34 0C34 0 33.6591 17.9837 26.5 25.5Z" fill="#4da1ff"></path></svg></span><strong style="position:relative;z-index:1;font-weight:bold"><div class="icon-logo"><svg viewBox="0 0 304 304" width="60" fill="none"><path class="logo_circle__6ao4W" d="M7 152C7 71.88 71.88 7 152 7c80.01 0 145 64.88 145 145 0 80.01-64.88 145-145 145C71.99 297 7 232.01 7 152Z" stroke-width="14"></path><path class="logo_letters__1_W2_" d="M134.53 76v111.49a35.08 35.08 0 0 1-35.21 35.01C79.83 222.5 64 206.76 64 187.49c0-19.27 15.83-35.1 35.32-35.1h30.22l40.98.09h34.26c19.48 0 35.22-16.6 35.22-35.97a35.08 35.08 0 0 0-35.22-35.01c-19.48 0-35.22 15.74-35.22 35.01V229" stroke-width="12"></path></svg></div></strong></span></li><li><div class="ButtonBurger_btnBurger__izZJ4 "><div class="ButtonBurger_btnBurgerLine__6wfzH"></div><div class="ButtonBurger_btnBurgerLine__6wfzH"></div><div class="ButtonBurger_btnBurgerLine__6wfzH"></div></div></li></ul></div></nav><div class="SideDraw_navSide__uONzf "><ul class="Nav__side--list"><li class="SideDraw_navSideItem__LAHJd"><a aria-label="Projects" href="/projects">Projects</a></li><li class="SideDraw_navSideItem__LAHJd"><a aria-label="Blog" href="/blog">Blog</a></li><li class="SideDraw_navSideItem__LAHJd"><a href="https://github.com/hunghg255" target="_blank" rel="noreferrer" aria-label="Github">Github</a></li><li class="SideDraw_navSideItem__LAHJd"><a href="https://twitter.com/hunghg255" target="_blank" rel="noreferrer" aria-label="Github">Twitter</a></li><li class="SideDraw_navSideItem__LAHJd"><a aria-label="RSS" href="/sitemap-0.xml">RSS</a></li></ul><div class="SideDraw_btnToggle__vSAku"><div class="CheckboxIos_checkboxIos__jpLKA"><input type="checkbox" id="cbios-1" class="CheckboxIos_cbios__hcuCl"/><label for="cbios-1" class="CheckboxIos_cbiosLabel__nv728"><span class="CheckboxIos_btnToggleCircle__rNEGr"><span class="CheckboxIos_btnCircle__EMWxa CheckboxIos_circle1__MxklN"></span><span class="CheckboxIos_btnCircle__EMWxa CheckboxIos_circle2__XItVC"></span><span class="CheckboxIos_btnCircle__EMWxa CheckboxIos_circle3__IMgsu"></span></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star1__11ScE"></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star2__aZWUu"></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star3__x4zQX"></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star4__pQU4z"></span><span class="CheckboxIos_btnToggleStar__7AK5y CheckboxIos_star5__PQOGK"></span></label></div></div></div><main><div class="LayoutBlog_containerBlog__MGhjT"><div class="Blogs_listBlog__Ic96o"><div class="Blogs_blogItem__kHf8X"><a href="/blog/promise-async-await-12eS7NS7auf5kcv9X8YN7x"><div class="Blogs_img__DD5vn"><img alt="" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://images.ctfassets.net/zdhzm3gdml81/504rzUckM1uTK7D4B9tQPJ/2f2355c698c85aa82c343b5fe4fa17c1/JavaScript-logo.png"/></div><div class="Blogs_content__VBFNb"><h2>ES2015: Promise, Async/Await</h2><p class="Blogs_date___u7rR">Date: <!-- -->22 Feb 2023</p><div class="Blogs_tags__XOvZF"><div class="blogTag Blogs_tagItem__rX9ml Blogs_javascript__z0_nP">javascript</div></div></div></a></div><div class="Blogs_blogItem__kHf8X"><a href="/blog/js-data-types-5tgT5622NNKcQrJIosX3d0"><div class="Blogs_img__DD5vn"><img alt="" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://images.ctfassets.net/zdhzm3gdml81/504rzUckM1uTK7D4B9tQPJ/2f2355c698c85aa82c343b5fe4fa17c1/JavaScript-logo.png"/></div><div class="Blogs_content__VBFNb"><h2>Data type, Operators, Variables, Scope, Program Structure</h2><p class="Blogs_date___u7rR">Date: <!-- -->15 Feb 2023</p><div class="Blogs_tags__XOvZF"><div class="blogTag Blogs_tagItem__rX9ml Blogs_javascript__z0_nP">javascript</div></div></div></a></div><div class="Blogs_blogItem__kHf8X"><a href="/blog/asynchronous-programming-1utNRhl7oGrB18pMBWDyJk"><div class="Blogs_img__DD5vn"><img alt="" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://images.ctfassets.net/zdhzm3gdml81/504rzUckM1uTK7D4B9tQPJ/2f2355c698c85aa82c343b5fe4fa17c1/JavaScript-logo.png"/></div><div class="Blogs_content__VBFNb"><h2>Asynchronous Programming</h2><p class="Blogs_date___u7rR">Date: <!-- -->22 Feb 2023</p><div class="Blogs_tags__XOvZF"><div class="blogTag Blogs_tagItem__rX9ml Blogs_javascript__z0_nP">javascript</div></div></div></a></div></div></div></main><div class="ButtonScrollTop_btnScrollTop__U59uG "><button type="button" aria-label="Button Scroll Top"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
1<path fill="currentColor" d="M6.7 14.7q-.275-.275-.275-.7t.275-.7l4.6-4.6q.15-.15.325-.212T12 8.425q.2 0 .388.075t.312.2l4.6 4.6q.275.275.275.7t-.275.7q-.275.275-.7.275t-.7-.275L12 10.8l-3.9 3.9q-.275.275-.7.275t-.7-.275Z"></path></svg></button></div></div></div>
1<script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"blogs":{"data":[{"metadata":{"tags":[{"sys":{"type":"Link","linkType":"Tag","id":"javascript"}}]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"12eS7NS7auf5kcv9X8YN7x","type":"Entry","createdAt":"2023-02-22T10:01:32.957Z","updatedAt":"2023-02-22T10:27:51.899Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":3,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"blogPost"}},"locale":"en-US"},"fields":{"title":"ES2015: Promise, Async/Await","slug":"promise-async-await","publishedDate":"2023-02-22T00:00+07:00","thumbnail":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"504rzUckM1uTK7D4B9tQPJ","type":"Asset","createdAt":"2023-02-18T07:03:59.918Z","updatedAt":"2023-02-18T07:03:59.918Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Javascript","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/504rzUckM1uTK7D4B9tQPJ/2f2355c698c85aa82c343b5fe4fa17c1/JavaScript-logo.png","details":{"size":10268,"image":{"width":1052,"height":1052}},"fileName":"JavaScript-logo.png","contentType":"image/png"}}},"body":{"nodeType":"document","data":{},"content":[{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Promises are an alternative to callbacks for delivering the\nresults of an asynchronous computation.","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"5gzfSEPPlzorMLq8gluR5C","type":"Asset","createdAt":"2023-02-22T10:04:46.358Z","updatedAt":"2023-02-22T10:04:46.358Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"carbon","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/5gzfSEPPlzorMLq8gluR5C/c047e17a746ae2a580d8dcc0353e8016/carbon.png","details":{"size":36907,"image":{"width":462,"height":260}},"fileName":"carbon.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• A Promise is always in one of three mutually exclusive states:\n- Before the result is ready, the Promise is pending.\n- If a result is available, the Promise is fulfilled.\n- If an error happened, the Promise is rejected.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• A Promise is settled if “things are done” (if it is either fulfilled or\nrejected).","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• A Promise is settled exactly once and then remains unchanged.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Promise reactions are callbacks that you register with the\nPromise method then(), to be notified of fulfillment or a\nrejection.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• A thenable is an object that has a Promise-style then() method.\nWhenever the API is only interested in being notified of\nsettlements, it only demands thenables (e.g. the values\nreturned from then() and catch(); or the values handed\nto Promise.all() , Promise.allSettled(), Promise.race()), Promise.race()).","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"7HQ0DpTExuWRIfAhMMmys6","type":"Asset","createdAt":"2023-02-22T10:07:51.196Z","updatedAt":"2023-02-22T10:07:51.196Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-22 at 17.07.26","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/7HQ0DpTExuWRIfAhMMmys6/f37a08f6ce54b6d04e14b478c18711e4/Screenshot_2023-02-22_at_17.07.26.png","details":{"size":80519,"image":{"width":850,"height":492}},"fileName":"Screenshot 2023-02-22 at 17.07.26.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Create a promise","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"41TtGmGdlXQf9Quz4ei0Dr","type":"Asset","createdAt":"2023-02-22T10:09:10.795Z","updatedAt":"2023-02-22T10:09:10.795Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"create-promise","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/41TtGmGdlXQf9Quz4ei0Dr/2cd438d67c844beb8d9ba0884302d2aa/create-promise.png","details":{"size":47543,"image":{"width":445,"height":335}},"fileName":"create-promise.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Consuming a Promise","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"4hpbYi6fmFKblmuD2pufww","type":"Asset","createdAt":"2023-02-22T10:10:40.978Z","updatedAt":"2023-02-22T10:10:40.978Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"execute-promise","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/4hpbYi6fmFKblmuD2pufww/3028c53f21fa00f28f753a31d9749b94/execute-promise.png","details":{"size":41555,"image":{"width":462,"height":298}},"fileName":"execute-promise.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Other ways of creating Promises\n- Promise.resolve()\n- Promise.reject()","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Chaining Promises","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"4ZyTrp3FVCXowHeS5Cv8uM","type":"Asset","createdAt":"2023-02-22T10:11:54.397Z","updatedAt":"2023-02-22T10:11:54.397Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"}
1,"fields":{"title":"carbon (1)","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/4ZyTrp3FVCXowHeS5Cv8uM/4472d042cf15c9322ff0eeb511d0ae93/carbon__1_.png","details":{"size":43635,"image":{"width":411,"height":316}},"fileName":"carbon (1).png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Promise anti-pattern: nested","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"66C36J33lJtKGk92t4AXzO","type":"Asset","createdAt":"2023-02-22T10:14:27.195Z","updatedAt":"2023-02-22T10:14:27.195Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"carbon (4)","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/66C36J33lJtKGk92t4AXzO/3fe482c08b649268b9d0d387af4d97dd/carbon__4_.png","details":{"size":58355,"image":{"width":411,"height":503}},"fileName":"carbon (4).png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• then always return a promise","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Async functions: always return a promise","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Await: works only inside async functions","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Can’t use await in regular functions","marks":[{"type":"bold"}],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• await won’t work in the top-level code","marks":[{"type":"bold"}],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Error handling","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"6xvopVMoGJj5FN6oSrmuVS","type":"Asset","createdAt":"2023-02-22T10:18:33.882Z","updatedAt":"2023-02-22T10:18:33.882Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"carbon (5)","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/6xvopVMoGJj5FN6oSrmuVS/d758bb978323853e3d91c29f9aa8f6f7/carbon__5_.png","details":{"size":69667,"image":{"width":681,"height":447}},"fileName":"carbon (5).png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Too Sequential","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"71T2g3N8M1YlskFlZsgBpo","type":"Asset","createdAt":"2023-02-22T10:21:01.201Z","updatedAt":"2023-02-22T10:21:01.201Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"carbon (6)","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/71T2g3N8M1YlskFlZsgBpo/820206384075867fa81f9174d659eaf8/carbon__6_.png","details":{"size":105045,"image":{"width":656,"height":614}},"fileName":"carbon (6).png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• http://speakingjs.com/es5/index.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es6/index.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es2016-es2017/ch_async-functions.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es2018-es2019/toc.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://eloquentjavascript.net/","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• https://github.com/getify/You-Dont-Know-JS#titles","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]}]}}},{"metadata":{"tags":[{"sys":{"type":"Link","linkType":"Tag","id":"javascript"}}]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"5tgT5622NNKcQrJIosX3d0","type":"Entry","createdAt":"2023-01-29T10:05:15.885Z","updatedAt":"2023-02-22T10:27:37.798Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":21,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"blogPost"}},"locale":"en-US"},"fields":{"title":"Data type, Operators, Variables, Scope, Program Structure","slug":"js-data-types","publishedDate":"2023-02-15T00:00+07:00","thumbnail":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"504rzUckM1uTK7D4B9tQPJ","type":"Asset","createdAt":"2023-02-18T07:03:59.918Z","updatedAt":"2023-02-18T07:03:59.918Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Javascript","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/504rzUckM1uTK7D4B9tQPJ/2f2355c698c85aa82c343b5fe4fa17c1/JavaScript-logo.png","details":{"size":10268,"image":{"width":1052,"height":1052}},"fileName":"JavaScript-logo.png","contentType":"image/png"}}},"body":{"nodeType":"document","data":{},"content":[{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"1. Primitive Values.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Boolean: true/false","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Number: 10, 3.14, ...","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• String: ‘abc’, ...","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Null","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Undefined","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Symbol (ES2015)","marks":[],"data":{}}]},{"nodeType":"blockquote","data":{},"content":[{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"Note: You can’t define your own primitive types.","marks":[{"type":"underline"},{"type":"italic"}],"data":{}}]}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[{"type":"underline"},{"type":"italic"}],"data":{}}]},{"nodeType":"unordered-list","data":{},"content":[{"nodeType":"list-item","data":{},"content":[{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"Compared by value: The content is compared","marks":[],"data":{}}]}]}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"3Ie5nWZdTf12ogsgKiEYVR","type":"Asset","createdAt":"2023-02-18T07:15:24.966Z","updatedAt":"2023-02-18T07:15:24.966Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-18 at 14.01.45","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/3Ie5nWZdTf12ogsgKiEYVR/79e9a5b97c860c664bfc88373ab490a7/Screenshot_2023-02-18_at_14.01.45.png","details":{"size":45779,"image":{"width":1080,"height":362}},"fileName":"Screenshot 2023-02-18 at 14.01.45.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"unordered-list","data":{},"content":[{"nodeType":"list-item","data":{},"content":[{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"Always immutable","marks":[],"data":{}}]}]}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"bqeB9GXmM40LSzKTMceIe","type":"Asset","createdAt":"2023-02-18T07:27:13.754Z","updatedAt":"2023-02-18T07:27:13.754Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-18 at 14.01.53","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/bqeB9GXmM40LSzKTMceIe/b680807dfade71eebb68e9e999443b62/Screenshot_2023-02-18_at_14.01.53.png","details":{"size":105667,"image":{"width":1074,"height":508}},"fileName":"Screenshot 2023-02-18 at 14.01.53.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"2. Reference Values","marks":[],"data":{}}]},{"nodeType":"unordered-list","data":{},"content":[{"nodeType":"list-item","data":{},"content":[{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"All nonprimitive values are objects.","marks":[],"data":{}}]}]},{"nodeType":"list-item","data":{},"content":[{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"Compared by reference","marks":[],"data":{}}]}]}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"Dmn5H68kPeO56wg7Pt4nu","type":"Asset","createdAt":"2023-02-18T07:28:29.097Z","updatedAt":"2023-02-18T07:28:29.097Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-18 at 14.02.06","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/Dmn5H68kPeO56wg7Pt4nu/3f0c30b6b3db9de11ceaf6b1e6a9201e/Screenshot_2023-02-18_at_14.02.06.png","details":{"size":53531,"image":{"width":1072,"height":360}},"fileName":"Screenshot 2023-02-18 at 14.02.06.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"unordered-list","data":{},"content":[{"nodeType":"list-item","data":{},"content":[{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"Mutable by default","marks":[],"data":{}}]}]}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"2fhKjd0qvwGc4GtjOMb3e","type":"Asset","createdAt":"2023-02-18T07:30:21.870Z","updatedAt":"2023-02-18T07:30:21.870Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-18 at 14.02.14","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/2fhKjd0qvwGc4GtjOMb3e/620162ace848aecdd814238d368bd260/Screenshot_2023-02-18_at_14.02.14.png","details":{"size":56583,"image":{"width":1064,"height":382}},"fileName":"Screenshot 2023-02-18 at 14.02.14.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"unordered-list","data":{},"content":[{"nodeType":"list-item","data":{},"content":[{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"User-extensible","marks":[],"data":{}}]}]}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"2OLuCd45ITmmZESN0oiAeL","type":"Asset","createdAt":"2023-02-18T07:31:10.581Z","updatedAt":"2023-02-18T07:31:10.581Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"}
1,"fields":{"title":"Screenshot 2023-02-18 at 14.02.21","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/2OLuCd45ITmmZESN0oiAeL/f928dd043298d049577d55233c10ab59/Screenshot_2023-02-18_at_14.02.21.png","details":{"size":97407,"image":{"width":1072,"height":508}},"fileName":"Screenshot 2023-02-18 at 14.02.21.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"3. Null and Undefined","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• undefined means “no value” (neither primitive nor object).\n- Uninitialized variables\n- Missing parameters\n- Missing properties have a nonvalue\n- Functions implicitly return it if nothing has been explicitly returned.\n• null means “no object.” It is used as a nonvalue where an object\nis expected (as a parameter, as a member in a chain of objects,\netc.).","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• undefined and null are the only values for which any kind of\nproperty access results in an exception.","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"2T83pASXdPhSYeERZNMQyU","type":"Asset","createdAt":"2023-02-18T07:38:09.759Z","updatedAt":"2023-02-18T07:38:09.759Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-18 at 14.37.12","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/2T83pASXdPhSYeERZNMQyU/6574f2dca6ae09f3cd6dd400040963bd/Screenshot_2023-02-18_at_14.37.12.png","details":{"size":103291,"image":{"width":1056,"height":460}},"fileName":"Screenshot 2023-02-18 at 14.37.12.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• undefined is not a keyword in JavaScript.","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"4. Truthy and Falsy Values","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• undefined, null","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Boolean: false","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Number: 0, NaN","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• String: ''","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• all objects are truthy","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"5. Operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Assignment operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Comparison operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Arithmetic operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Bitwise operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Logical operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• String operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Conditional (ternary) operator","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Comma operator","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Unary operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Relational operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"•","marks":[],"data":{}},{"nodeType":"text","value":" JavaScript Comparison Algorithms:","marks":[{"type":"bold"}],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n- Two strings are strictly equal when they have the same sequence of\ncharacters, same length, and same characters in corresponding\npositions.\n- Two numbers are strictly equal when they are numerically equal (have\nthe same number value). NaN is not equal to anything, including NaN.\nPositive and negative zeros are equal to one another.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"- Two Boolean operands are strictly equal if both are true or both\nare false.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"- Two distinct objects are never equal for either strict or abstract\ncomparisons.\n- An expression comparing Objects is only true if the operands reference\nthe same Object.\n- Null and Undefined Types are strictly equal to themselves and\nabstractly equal to each other.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}},{"nodeType":"hyperlink","data":{"uri":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators"},"content":[{"nodeType":"text","value":"Developer mozilla comparison","marks":[],"data":{}}]},{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• ","marks":[],"data":{}},{"nodeType":"text","value":"JavaScript Comparison Algorithms - Equality Operators:","marks":[{"type":"bold"}],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"- When comparing a number and a string, the string is converted to a\nnumber value.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"- If one of the operands is Boolean, (1 if it is true and +0 if it is false).\n- If an object is compared with a number or string, JavaScript attempts\nto return the default value for the object. Operators attempt to convert\nthe object to a primitive value, a String or Number value, using\nthe valueOf and toString methods of the objects. If this attempt to\nconvert the object fails, a runtime error is generated.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"- If the valueOf method returns a primitive value, the toString method\nwill never be called.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"- Note that an object is converted into a primitive if, and only if, its\ncomparand is a primitive. If both operands are objects, they're\ncompared as objects, and the equality test is true only if both refer to the\nsame object.","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"7EZlOpeKZvyS7Yt8i4uyQJ","type":"Asset","createdAt":"2023-02-18T07:46:04.713Z","updatedAt":"2023-02-18T07:46:04.713Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"}
1,"fields":{"title":"Screenshot 2023-02-18 at 14.45.41","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/7EZlOpeKZvyS7Yt8i4uyQJ/2565672dd2207bfbf6428c7dd5770a75/Screenshot_2023-02-18_at_14.45.41.png","details":{"size":54659,"image":{"width":832,"height":512}},"fileName":"Screenshot 2023-02-18 at 14.45.41.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"6. The Plus Operator","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• If one of them is a string, the other is also converted to a string\nand both are concatenated.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Otherwise, both operands are converted to numbers and\nadded.","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"7. Unary Operators","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Unary plus (+): Tries to convert the operand into a number\n• Unary negation (-): Tries to convert the operand into a number and negates after\n• Logical Not (!): Converts to boolean value then negates it\n• Increment (++): Adds one to its operand\n• Decrement (--): Decrements by one from its operand\n• Bitwise not (~): Inverts all the bits in the operand and returns a number\n• typeof: Returns a string which is the type of the operand\n• delete: Deletes specific index of an array or specific property of an object\n• void: Discards a return value of an expression.","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"8. Variables, Scope","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Declaring and Assigning Variables.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Function scope: var","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Block scope: let, const","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"1Qod95Pn3yJwmLEqbKGlkl","type":"Asset","createdAt":"2023-02-18T07:51:17.724Z","updatedAt":"2023-02-18T07:51:17.724Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-18 at 14.50.38","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/1Qod95Pn3yJwmLEqbKGlkl/eb15db63c79502861eaa745e9f908fa0/Screenshot_2023-02-18_at_14.50.38.png","details":{"size":65584,"image":{"width":994,"height":470}},"fileName":"Screenshot 2023-02-18 at 14.50.38.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"3M4RKcSHVEjfn2wtYSLaul","type":"Asset","createdAt":"2023-02-18T07:51:42.757Z","updatedAt":"2023-02-18T07:51:42.757Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-18 at 14.50.51","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/3M4RKcSHVEjfn2wtYSLaul/b6c985e14e2265fba204c59d5805cdd9/Screenshot_2023-02-18_at_14.50.51.png","details":{"size":66071,"image":{"width":986,"height":466}},"fileName":"Screenshot 2023-02-18 at 14.50.51.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"9. Program Structure","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Conditionals: if-else, switch-case.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Loops: while, do-while, for, for-in, for-of.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• http://speakingjs.com/es5/index.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es6/index.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es2016-es2017/ch_async-functions.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es2018-es2019/toc.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://eloquentjavascript.net/","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• https://github.com/getify/You-Dont-Know-JS#titles","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]}]}}},{"metadata":{"tags":[{"sys":{"type":"Link","linkType":"Tag","id":"javascript"}}]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"1utNRhl7oGrB18pMBWDyJk","type":"Entry","createdAt":"2023-02-22T09:18:12.803Z","updatedAt":"2023-02-22T10:27:22.892Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":5,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"blogPost"}},"locale":"en-US"},"fields":{"title":"Asynchronous Programming","slug":"asynchronous-programming","publishedDate":"2023-02-22T00:00+07:00","thumbnail":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"504rzUckM1uTK7D4B9tQPJ","type":"Asset","createdAt":"2023-02-18T07:03:59.918Z","updatedAt":"2023-02-18T07:03:59.918Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Javascript","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/504rzUckM1uTK7D4B9tQPJ/2f2355c698c85aa82c343b5fe4fa17c1/JavaScript-logo.png","details":{"size":10268,"image":{"width":1052,"height":1052}},"fileName":"JavaScript-logo.png","contentType":"image/png"}}},"body":{"nodeType":"document","data":{},"content":[{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"1. Blocking and non-blocking ","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Blocking: like some c/c++ languages... the code is executed from top to bottom from left to right. Some works will be waiting for a long time such as reading, and writing files, ...","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Non-blocking: in javascript code will still run from top to bottom from left to right but there will be some tasks such as timeout, ajax, and DOM,..., these tasks in javascript will not execute directly. it will be passed to the web API to process and return a callback function, the callback functions will be executed later","marks":[],"data":{}}]},{"nodeType":"heading-2","data":{},"content":[{"nodeType":"text","value":"2. Asynchronous Programming","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Both JavaScript in the browser, and in Node.js, are single-threaded.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• In synchronous programs, if you have two lines of code (L1\nfollowed by L2), then L2 cannot begin running until L1 has\nfinished executing.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• In asynchronous programs, you can have tw
1o lines of code (L1\nfollowed by L2), where L1 schedules some tasks to be run in the\nfuture, but L2 runs before that task completes.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Call Stack","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"7FjN1aqLoKDNWpDu4drWUc","type":"Asset","createdAt":"2023-02-22T09:10:46.298Z","updatedAt":"2023-02-22T09:10:46.298Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-22 at 16.10.11","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/7FjN1aqLoKDNWpDu4drWUc/80155ebe3c5494db73593f771d2793ec/Screenshot_2023-02-22_at_16.10.11.png","details":{"size":474521,"image":{"width":1344,"height":674}},"fileName":"Screenshot 2023-02-22 at 16.10.11.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Web Browser API","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"2bMEHlcPLrBVv0MVZP6kqG","type":"Asset","createdAt":"2023-02-22T09:11:56.510Z","updatedAt":"2023-02-22T09:11:56.510Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-22 at 16.11.22","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/2bMEHlcPLrBVv0MVZP6kqG/f32cb6d85de1053508f7fb359a9bd453/Screenshot_2023-02-22_at_16.11.22.png","details":{"size":52820,"image":{"width":628,"height":282}},"fileName":"Screenshot 2023-02-22 at 16.11.22.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Event Loop: The reality is that all JavaScript executes\nsynchronously - it's the event loop that allows you to queue up\nan action that won't take place until the loop is available some\ntime after the code that queued the action has finished\nexecuting.","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"3dEBnbcOqDoFby1Am6cUNs","type":"Asset","createdAt":"2023-02-22T09:14:21.057Z","updatedAt":"2023-02-22T09:14:21.057Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-22 at 16.13.11","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/3dEBnbcOqDoFby1Am6cUNs/baf3885a1cec444a3bce48b0962604f9/Screenshot_2023-02-22_at_16.13.11.png","details":{"size":130837,"image":{"width":1226,"height":1046}},"fileName":"Screenshot 2023-02-22 at 16.13.11.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Callback:","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"- Pros: Easy to understand (only for simple callback function).\n- Cons: Error handling becomes more complicated, Composition is more\ncomplicated (Callback hell)","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"28kPNaOSHAG682v4a8yTfD","type":"Asset","createdAt":"2023-02-22T09:16:02.391Z","updatedAt":"2023-02-22T09:16:02.391Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"g9t2l43uyqv4243pocsg","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/28kPNaOSHAG682v4a8yTfD/5892d3271e418d387a20555eca0aa5df/g9t2l43uyqv4243pocsg.webp","details":{"size":97576,"image":{"width":1600,"height":900}},"fileName":"g9t2l43uyqv4243pocsg.webp","contentType":"image/webp"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• AJAX","marks":[],"data":{}}]},{"nodeType":"embedded-asset-block","data":{"target":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"zdhzm3gdml81"}},"id":"77o1Ab2RhnV0PXlZYBGAej","type":"Asset","createdAt":"2023-02-22T09:17:10.950Z","updatedAt":"2023-02-22T09:17:10.950Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"Screenshot 2023-02-22 at 16.16.44","description":"","file":{"url":"//images.ctfassets.net/zdhzm3gdml81/77o1Ab2RhnV0PXlZYBGAej/39dd8700941728b425a597eb0ac163cd/Screenshot_2023-02-22_at_16.16.44.png","details":{"size":147085,"image":{"width":1054,"height":544}},"fileName":"Screenshot 2023-02-22 at 16.16.44.png","contentType":"image/png"}}}},"content":[]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• Asynchronous programming makes it possible to express waiting for\nlong-running actions without freezing the program during these\nactions.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• JavaScript environments typically implement this style of\nprogramming using callbacks, functions that are called when the\nactions complete.\n• An event loop schedules such callbacks to be called when\nappropriate, one after the other, so that their execution does not\noverlap.","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"• http://speakingjs.com/es5/index.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es6/index.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es2016-es2017/ch_async-functions.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://exploringjs.com/es2018-es2019/toc.html","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• http://eloquentjavascript.net/","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"\n• https://github.com/getify/You-Dont-Know-JS#titles","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]},{"nodeType":"paragraph","data":{},"content":[{"nodeType":"text","value":"","marks":[],"data":{}}]}]}}}],"total":3,"limit":10}},"__N_SSG":true},"page":"/blog","query":{},"buildId":"puAQ5Og02pNCGviZXgk3B","assetPrefix":".","isFallback":false,"gsp":true,"scriptLoader":[{"strategy":"lazyOnload","async":true,"src":"https://www.googletagmanager.com/gtag/js?i
1d=G-WZW3J8S7EF"},{"id":"google-analytics","strategy":"lazyOnload","children":"\n              window.dataLayer = window.dataLayer || [];\n              function gtag(){dataLayer.push(arguments);}\n              gtag('js', new Date());\n              gtag('config', 'G-WZW3J8S7EF');\n            "}]}</script>
1</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.