рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЕрдиреБрднрд╡реА рд▓реЛрдЧреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛редрдРрд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдЬреЛ рдореБрдЭреЗ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд▓рдЧреЗ, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рд╣рд┐рддреНрдп рдХреЗ рд╕рдВрджрд░реНрдн рджрд┐рдП рдЧрдП рд╣реИрдВредрдореИрдВ рд╡рд┐рд╕реНрддреГрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред рд▓реЗрдЦ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛редрддреЛ рдЪрд▓рддреЗ рд╣реИрдВред70 рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди
рдкреНрд░рд╢реНрди:1. рдЕрд╢рдХреНрдд рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?2. && рдСрдкрд░реЗрдЯрд░ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?3. "рдСрдкрд░реЗрдЯрд░" рдХрд┐рд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?4. рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рдпреВрдиреАрд░реА рдкреНрд▓рд╕ (+ рдСрдкрд░реЗрдЯрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?5. рдПрдХ рдбреЛрдо рдХреНрдпрд╛ рд╣реИ?6. рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрдкреЛрдЧреЗрд╢рди рдХреНрдпрд╛ рд╣реИ?7. рдЗрд╡реЗрдВрдЯ рдмрдмрд▓рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?8. рдЗрд╡реЗрдВрдЯ рдХреИрдкреНрдЪрд░рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?9. Event.preventDefault () рдФрд░ event.stopPropagation () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?10. Event.preventDefault () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рдиреЗрдВ?11. obj.someprop.x рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ?12. рдПрдХ рдШрдЯрдирд╛ рд▓рдХреНрд╖реНрдп рдпрд╛ рд▓рдХреНрд╖реНрдп рддрддреНрд╡ (event.target) рдХреНрдпрд╛ рд╣реИ?13. (event.currentTarget)?14. "==" "==="?15. false?16. "!!"?17. ?18. (Hoisting)?19. (Scope)?20. (Closures)?21. JS ?22. , ?23. ┬лuse strict┬╗?24. this?25. ?26. IIFE?27. Function.prototype.apply?28. Function.prototype.call?29. call apply?30. Function.prototype.bind?31. JS ?32. (Higher Order Functions)?33. JS (First-class Objects)?34. Array.prototype.map?35. Array.prototype.filter?36. Array.prototype.reduce?37. arguments?38. , ?39. b ?40. ECMAScript?41. JS ES6 ECMAScript2015?42. ┬лvar┬╗, ┬лlet┬╗ ┬лconst┬╗?43. (Arrow Functions)?44. (Classes)?45. (Template Literals)?46. (Object Destructuring)?47. (Modules)?48. Set?49. (Callback Function)?50. (Promises)?51. async/await?52. spread- rest-?53. (Default Parameters)?54. (Wrapper Objects)?55. (Implicit and Explicit Coercion)?56. NaN? , NaN?57. , ?58. , , ( "%")?59. ?60. AJAX?61. JS ?62. Object.freeze Object.seal?63. ┬лin┬╗ hasOwnProperty?64. рдЬреЗрдПрд╕ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреМрди рд╕реА рддрдХрдиреАрдХреЗрдВ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ?65. рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ?66. рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ?67. рд╕рдВрд╕реНрдорд░рдг рдпрд╛ рд╕рдВрд╕реНрдорд░рдг рдХреНрдпрд╛ рд╣реИ?68. рдЖрдк рд╕рдВрд╕реНрдорд░рдг рдХреЗ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ?69. рдЯрд╛рдЗрдкрдСрдл рдирд▓ рд░рд┐рдЯрд░реНрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпреЛрдВ? рдпрджрд┐ рдорд╛рди рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ?70. "рдирдпрд╛" рдХреАрд╡рд░реНрдб рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?1. рдЕрд╢рдХреНрдд рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИредрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реЗ 7 рдЬреЗрдПрд╕ "рдЖрджрд┐рдо" (рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ:let primitiveTypes = ['string', 'number', 'null', 'undefined', 'boolean', 'symbol', 'bigint']
рджреВрд╕рд░реЗ, рд╡реЗ рдЭреВрдареЗ рдореВрд▓реНрдп рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдмреВрд▓рд┐рдпрди () рдпрд╛ рдСрдкрд░реЗрдЯрд░ "" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмреВрд▓рд┐рдпрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо! рдЧрд▓рдд рд╣реИ:console.log(!!null)
console.log(!!undefined)
console.log(Boolean(null))
console.log(Boolean(undefined))
рдареАрдХ рд╣реИ, рдЕрдм рдорддрднреЗрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВредрдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИ:- рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдЬрд┐рд╕реЗ рдХреЛрдИ рдорд╛рди рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдПрдХ рдШреЛрд╖рд┐рдд рд▓реЗрдХрд┐рди рдЖрд░рдВрднрд┐рдХ рдЪрд░ рдирд╣реАрдВ;
- рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (1);
- рд╡рд╕реНрддреБ рдХрд╛ рдХреЛрдИ рдирд╣реАрдВред
рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИредlet _thisIsUndefined
const doNothing = () => {}
const someObj = {
a: 'ay',
b: 'bee',
c: 'si'
}
console.log(_thisIsUndefined)
console.log(doNothing())
console.log(someObj['d'])
рдирд▓ "рдмрд┐рдирд╛ рдореВрд▓реНрдп рдХрд╛ рдореВрд▓реНрдп" рд╣реИред null рд╡рд╣ рдорд╛рди рд╣реИ рдЬреЛ рдЪрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм fs.readFile рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИ:fs.readFile('path/to/file', (e, data) => {
console.log(e)
if(e) {
console.log(e)
}
console.log(data)
})
рдЕрд╢рдХреНрдд рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп, рд╣рдо "==" рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдЪ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ "===" рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рдд рд╣реЛрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рджреЗрдЦреЗрдВредconsole.log(null == undefined)
console.log(null === undefined)
2. && рдСрдкрд░реЗрдЯрд░ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
&& рдСрдкрд░реЗрдЯрд░ (рддрд╛рд░реНрдХрд┐рдХ) рд╕рднреА рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╣реА рд╣реЛрдиреЗ рдкрд░ рдкрд╣рд▓рд╛ рдЧрд▓рдд рдорд╛рди рдпрд╛ рдЕрдВрддрд┐рдо рдСрдкрд░реЗрдВрдб рдкрд╛рддрд╛ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рд╛рдЧрддреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:console.log(false && 1 && [])
console.log(' ' && true && 5)
рдпрджрд┐ рдХрдерди рдХреЗ рд╕рд╛рде:const router: Router = Router()
router.get('/endpoint', (req: Request, res: Response) => {
let conMobile: PoolConnection
try {
} catch (e) {
if (conMobile) {
conMobile.release()
}
}
})
&& рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдмрд╛рдд:const router: Router = Router()
router.get('/endpoint', (req: Request, res: Response) => {
let conMobile: PoolConnection
try {
} catch (e) {
conMobile && conMobile.release()
}
})
3. "рдСрдкрд░реЗрдЯрд░" рдХрд┐рд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рд╕рдВрдЪрд╛рд▓рдХ "||" (рдмреВрд▓рд┐рдпрди рдпрд╛) рдкрд╣рд▓рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдкрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ ES6 рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редconsole.log(null || 1 || undefined)
function logName(name) {
let n = name || Mark
console.log(n)
}
logName()
4. рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рд╣реИ рдпреВрдиреАрд░реА рдкреНрд▓рд╕ (+ рдСрдкрд░реЗрдЯрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ?
рдПрдордбреАрдПрди рдХреЗ
рдЕрдиреБрд╕рд╛рд░ , + рд╕рдВрдЪрд╛рд▓рдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдореВрд▓реНрдп рдкрд░ рдХреЛрдИ рднреА рд╕рдВрдЪрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред5. рдПрдХ рдбреЛрдо рдХреНрдпрд╛ рд╣реИ?
DOM рдпрд╛ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ HTML рдФрд░ XML рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдПрдкреАрдЖрдИ) рд╣реИред рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд╣рд▓реА рдмрд╛рд░ HTML рдбреЙрдХреНрдпреВрдореЗрдВрдЯ ("рдкрд░реНрд╕") рдкрдврд╝рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмрдбрд╝реА рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рд╡рд╕реНрддреБ рд╣реИ - DOMред DOM рдПрдХ рдЯреНрд░реА рд╕реНрдЯреНрд░рдХреНрдЪрд░ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯреНрд░реА) рд╣реИред DOM рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рдпрдВ DOM рдпрд╛ рдЗрд╕рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рдФрд░ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ HTML рд╣реИ:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document Object Model</title>
</head>
<body>
<div>
<p>
<span></span>
</p>
<label></label>
<input>
</div>
</body>
</html>
рдЗрд╕ HTML рдХрд╛ DOM рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
JS рдореЗрдВ, DOM рдХреЛ рдПрдХ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рддрддреНрд╡реЛрдВ, рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг, рд╕рдВрд╢реЛрдзрди, рд╡рд┐рд▓реЛрдкрди рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред6. рдЗрд╡реЗрдВрдЯ рдкреНрд░рдЪрд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдЬрдм рдХреЛрдИ рдИрд╡реЗрдВрдЯ DOM рддрддреНрд╡ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рди рдХреЗрд╡рд▓ рдЗрд╕рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдИрд╡реЗрдВрдЯ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЙрд╕ рддрддреНрд╡ рдХреЛ "рдкреНрд░рдЪрд╛рд░рд┐рдд" рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ (Event.target) рдХрд╣рд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдШрдЯрдирд╛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓рдХреНрд╖реНрдп рддрддреНрд╡ рдХреЗ рд╕рднреА рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд (рдкреНрд░рднрд╛рд╡рд┐рдд) рдХрд░рддреА рд╣реИред рдПрдХ рдШрдЯрдирд╛ рдкреНрд░рд╕рд╛рд░ рдХреЗ рддреАрди рдЪрд░рдг рдпрд╛ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:- рд╡рд┐рд╕рд░реНрдЬрди (рдХрдмреНрдЬрд╛, рдЕрд╡рд░реЛрдзрди) рдЪрд░рдг - рдПрдХ рдШрдЯрдирд╛ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╕рднреА рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШрдЯрдирд╛ рдХреЗ рд▓рдХреНрд╖реНрдп рддрдХ рдЙрддрд░рддреА рд╣реИред
- рд▓рдХреНрд╖реНрдп рдЪрд░рдг рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдШрдЯрдирд╛ рд▓рдХреНрд╖реНрдп рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИред
- рдЖрд░реЛрд╣реА рдЪрд░рдг - рдПрдХ рдШрдЯрдирд╛ event.target рд╕реЗ рдЙрдЧрддрд╛ рд╣реИ, рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╕рднреА рдкреВрд░реНрд╡рдЬреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ
рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ ред7. рдПрдХ рдЗрд╡реЗрдВрдЯ рдкреЙрдкрдЕрдк рдХреНрдпрд╛ рд╣реИ?
рдЬрдм рдХреЛрдИ рдШрдЯрдирд╛ DOM рддрддреНрд╡ рдореЗрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рди рдХреЗрд╡рд▓ рдЗрд╕ рддрддреНрд╡ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред рдПрдХ рдШрдЯрдирд╛ "рдкреЙрдк рдЕрдк" (рдкрд╛рдиреА рдореЗрдВ рдПрдХ рд╣рд╡рд╛ рдХреЗ рдмреБрд▓рдмреБрд▓реЗ рдХреА рддрд░рд╣), рдЙрд╕ рддрддреНрд╡ рд╕реЗ рдЧреБрдЬрд░рддреА рд╣реИ рдЬрд┐рд╕рдиреЗ рдШрдЯрдирд╛ (рдЗрд╡реЗрдВрдЯ рдЯрд╛рд░рдЧреЗрдЯ) рдХреЛ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрд╛рд╕ рдкрд╣реБрдВрдЪрд╛рдпрд╛, рдлрд┐рд░ рддрддреНрд╡ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рддрдХ рдФрд░ рднреА рдЕрдзрд┐рдХ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛редрдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдорд╛рд░реНрдХрдЕрдк рд╣реИ:<div class="grandparent">
<div class="parent">
<div class="child">1</div>
</div>
</div>
рдФрд░ рдРрд╕рд╛ рдЬреЗрдПрд╕:function addEvent(el, event, callback, isCapture = false) {
if (!el || !event || !callback || typeof callback !== 'function') return
if (typeof el === 'string') {
el = document.querySelector(el)
}
el.addEventListener(event, callback, isCapture)
}
addEvent(document, 'DOMContentLoaded', () => {
const child = document.querySelector('.child')
const parent = document.querySelector('.parent')
const grandparent = document.querySelector('.grandparent')
addEvent(child, 'click', function(e) {
console.log('child')
})
addEvent(parent, 'click', function(e) {
console.log('parent')
})
addEvent(grandparent, 'click', function(e) {
console.log('grandparent')
})
addEvent('html', 'click', function(e) {
console.log('html')
})
addEvent(document, 'click', function(e) {
console.log('document')
})
addEvent(window, 'click', function(e) {
console.log('window')
})
})
AddEventListener рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рддреАрд╕рд░рд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ - рдЙрдкрдпреЛрдЧрдХреИрдкрдЪрд░ред рдЬрдм рдЗрд╕рдХрд╛ рдорд╛рди рдЭреВрдард╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдШрдЯрдирд╛ рдЖрд░реЛрд╣реА рдЪрд░рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдЬрдм рдЗрд╕рдХрд╛ рдорд╛рди рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдИрд╡реЗрдВрдЯ рд╡рд┐рд╕рд░реНрдЬрди рдЪрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ (рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдЬреБрдбрд╝реА рдШрдЯрдирд╛рдУрдВ рдХреЗ "рд╢реНрд░реЛрддрд╛рдУрдВ" рдХреЗ рд▓рд┐рдП, рдИрд╡реЗрдВрдЯ рд▓рдХреНрд╖реНрдп рдЪрд░рдг рдореЗрдВ рд╣реИ, рдФрд░ рд╡рд┐рд╕рд░реНрдЬрди рдпрд╛ рдЪрдврд╝рд╛рдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЯрд╛рд░рдЧреЗрдЯ рдЪрд░рдг рдореЗрдВ рдИрд╡реЗрдВрдЯ рдХреНрд░рдо рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рд╢реНрд░реЛрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдкрдВрдЬреАрдХреГрдд рдереЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ - рд▓рдЧрднрдЧред рдпрджрд┐ рд╣рдо рдмрд╛рд▓ рддрддреНрд╡ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрд╕реЛрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛: рдмрдЪреНрдЪрд╛, рдорд╛рддрд╛-рдкрд┐рддрд╛, рджрд╛рджрд╛-рджрд╛рджреА, HTML, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рд╡рд┐рдВрдбреЛред рдпрд╣рд╛рдБ рдПрдХ рдШрдЯрдирд╛ рдкреЙрдкрдЕрдк рдХреНрдпрд╛ рд╣реИред8. рд╡рд┐рд╕рд░реНрдЬрди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрдпрд╛ рд╣реИ?
рдЬрдм рдХреЛрдИ рдИрд╡реЗрдВрдЯ DOM рддрддреНрд╡ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рди рдХреЗрд╡рд▓ рдЗрд╕рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╕рд░реНрдЬрди рдЪрд░рдг рдореЗрдВ, рдШрдЯрдирд╛ рдЕрдкрдиреЗ рд╕рднреА рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдШрдЯрдирд╛ рд▓рдХреНрд╖реНрдп рддрдХ рдЙрддрд░рддреА рд╣реИредрдорд╛рд░реНрдХрдЕрдк:<div class="grandparent">
<div class="parent">
<div class="child">1</div>
</div>
</div>
рдЬреЗ рдПрд╕:function addEvent(el, event, callback, isCapture = false) {
if (!el || !event || !callback || typeof callback !== 'function') return
if (typeof el === 'string') {
el = document.querySelector(el);
}
el.addEventListener(event, callback, isCapture)
}
addEvent(document, 'DOMContentLoaded', () => {
const child = document.querySelector('.child')
const parent = document.querySelector('.parent')
const grandparent = document.querySelector('.grandparent')
addEvent(child, 'click', function(e) {
console.log('child');
}, true)
addEvent(parent, 'click', function(e) {
console.log('parent')
}, true)
addEvent(grandparent, 'click', function(e) {
console.log('grandparent')
}, true)
addEvent('html', 'click', function(e) {
console.log('html')
}, true)
addEvent(document, 'click', function(e) {
console.log('document')
}, true)
addEvent(window, 'click', function(e) {
console.log('window')
}, true)
})
AddEventListener рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рддреАрд╕рд░рд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ - рдЙрдкрдпреЛрдЧрдХреИрдкрдЪрд░ред рдЬрдм рдЗрд╕рдХрд╛ рдорд╛рди рдЭреВрдард╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдШрдЯрдирд╛ рдЖрд░реЛрд╣реА рдЪрд░рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдЬрдм рдЗрд╕рдХрд╛ рдорд╛рди рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдШрдЯрдирд╛ рдЧреЛрддрд╛ рдЪрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рд╣рдо рдмрд╛рд▓ рддрддреНрд╡ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВрдЧреЗ: рд╡рд┐рдВрдбреЛ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, HTML, рджрд╛рджрд╛-рджрд╛рджреА, рдорд╛рддрд╛-рдкрд┐рддрд╛, рдмрдЪреНрдЪрд╛ред рдпрд╣ рдЖрдпреЛрдЬрди рдХрд╛ рд╡рд┐рд╕рд░реНрдЬрди рд╣реИред9. Event.preventDefault () рдФрд░ event.stopPropagation () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
Event.preventDefault () рд╡рд┐рдзрд┐ рдХрд┐рд╕реА рддрддреНрд╡ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреА рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝реЙрд░реНрдо рдПрд▓рд┐рдореЗрдВрдЯ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдлрд╝реЙрд░реНрдо рдХреЛ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдВрджрд░реНрднрдореЗрдиреВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдХреАрдмреЛрд░реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреАрдд / рд╡реАрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдпрд╛ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдмрдирд╛рддреЗ рд╕рдордп - рд▓рдЧрднрдЧ рдЯреНрд░рд╛рдВрд╕ред)ред Event.stopPropagation () рд╡рд┐рдзрд┐ рдИрд╡реЗрдВрдЯ рдкреНрд░рдЪрд╛рд░ (рдЗрд╕рдХреА рдЪрдврд╝рд╛рдИ рдпрд╛ рд╡рд┐рд╕рд░реНрдЬрди) рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреА рд╣реИред10. Event.preventDefault () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рдиреЗрдВ?
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо event.defaulPrevented рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдмреВрд▓рд┐рдпрди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЗрд╡реЗрдВрдЯ рдХреЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред11. obj.someprop.x рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ?
const obj = {}
console.log(obj.someprop.x)
рдЙрддреНрддрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╣рдо рдХреБрдЫ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА x рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред obj .__ proto __.__ proto = null, рдЗрд╕рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗ рдкрд╛рд╕ x рдЧреБрдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред12. рдПрдХ рдШрдЯрдирд╛ рд▓рдХреНрд╖реНрдп рдпрд╛ рд▓рдХреНрд╖реНрдп рддрддреНрд╡ (event.target) рдХреНрдпрд╛ рд╣реИ?
рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, event.target рд╡рд╣ рддрддреНрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛ рд╡рд╣ рддрддреНрд╡ рдЬреЛ рдШрдЯрдирд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИредрд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдХрдЕрдк рд╣реИрдВ:<div onclick="clickFunc(event)" style="text-align: center; margin: 15px;
border: 1px solid red; border-radius: 3px;">
<div style="margin: 25px; border: 1px solid royalblue; border-radius: 3px;">
<div style="margin: 25px; border: 1px solid skyblue; border-radius: 3px;">
<button style="margin: 10px">
Button
</button>
</div>
</div>
</div>
рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдЬреЗрдПрд╕:function clickFunc(event) {
console.log(event.target)
}
рд╣рдордиреЗ рдмрд╛рд╣рд░реА рд╢реНрд░реЛрддрд╛ рдХреЗ рд▓рд┐рдП "рд╢реНрд░реЛрддрд╛" рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рд╣рдо рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЗрд╕ рдмрдЯрди рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рд╡рд╛рд▓рд╛ рддрддреНрд╡ рд╕реНрд╡рдпрдВ рдмрдЯрди рд╣реИ, рди рдХрд┐ рдмрд╛рд╣рд░реА рдпрд╛ рдЖрдВрддрд░рд┐рдХ divsред13. рдШрдЯрдирд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЙрджреНрджреЗрд╢реНрдп (Event.currentTarget) рдХреНрдпрд╛ рд╣реИ?
Event.currentTarget рд╡рд╣ рддрддреНрд╡ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рд╕рдВрд▓рдЧреНрди рд╣реИредрд╕рдорд╛рди рдорд╛рд░реНрдХрдЕрдк:<div onclick="clickFunc(event)" style="text-align: center;margin:15px;
border:1px solid red;border-radius:3px;">
<div style="margin: 25px; border:1px solid royalblue;border-radius:3px;">
<div style="margin:25px;border:1px solid skyblue;border-radius:3px;">
<button style="margin:10px">
Button
</button>
</div>
</div>
</div>
рдФрд░ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд JS:function clickFunc(event) {
console.log(event.currentTarget)
}
рд╣рдордиреЗ рд╢реНрд░реЛрддрд╛ рдХреЛ рдмрд╛рд╣рд░реА div рд╕реЗ рдЬреЛрдбрд╝рд╛ред рд╣рдо рдЬрд╣рд╛рдВ рднреА рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рдмрдЯрди рд╣реЛ рдпрд╛ рдЖрдВрддрд░рд┐рдХ divs рдореЗрдВ рд╕реЗ рдПрдХ, рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рдмрд╛рд╣рд░реА div рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ event.currentTarget рд╡рд╣ рддрддреНрд╡ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред14. рдСрдкрд░реЗрдЯрд░ "==" рдФрд░ "===" рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рдСрдкрд░реЗрдЯрд░ == (рд╕рд╛рд░ рдпрд╛ рдЧреИрд░-рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛) рдФрд░ рдСрдкрд░реЗрдЯрд░ === (рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛) рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ (Coersion), рдФрд░ рджреВрд╕рд░рд╛ - рдРрд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд┐рдирд╛ редрдЪрд▓реЛ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░реЗрдВред рдФрд░ рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВредрд░реВрдкрд╛рдВрддрд░рдг рдХрд┐рд╕реА рдорд╛рди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ, рдпрд╛ рдмрд▓реНрдХрд┐, рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рддреБрд▓рдирд╛рддреНрдордХ рдорд╛рдиреЛрдВ рдХреЛ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп, рдСрдкрд░реЗрдЯрд░ "==" рддрдерд╛рдХрдерд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддреБрд▓рдирд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдСрдкрд░реЗрдЯрд░ "==" рджреЛ рдорд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИредрдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдо x рдФрд░ y рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВредрдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:- рдпрджрд┐ x рдФрд░ y рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВ, рддреЛ рддреБрд▓рдирд╛ "===" рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИред
- x = null y = undefined true.
- x = undefined y = null true.
- x = , y = , x == toNumber(y) ( y ).
- x = , y = , toNumber(x) == y ( x ).
- x = , toNumber(x) == y.
- y = , x == toNumber(y).
- x = , , y = , x == toPrimitive(y) ( y ).
- x = , y = , , toPrimitive(x) == y.
- false.
рдпрд╛рдж рд░рдЦреЗрдВ: рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ "рдЖрджрд┐рдо" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, thePrimitive рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ valueOf рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдлрд┐рд░ рд╕реНрдЯреЛрдХреНрд╕ рд╡рд┐рдзрд┐ рдХрд╛редрдЙрджрд╛рд╣рд░рдг:
рд╕рднреА рдЙрджрд╛рд╣рд░рдг рд╕рд╣реА рд╣реИрдВредрдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдкрд╣рд▓реА рд╢рд░реНрдд рд╣реИредрджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЪреМрдереА рд╕реНрдерд┐рддрд┐ рд╣реИредрддреАрд╕рд░рд╛ рджреВрд╕рд░рд╛ рд╣реИредрдЪреМрдерд╛ рд╕рд╛рддрд╡рд╛рдБ рд╣реИредрдкрд╛рдВрдЪрд╡рд╛рдВ - рдЖрдард╡рд╛рдВредрдФрд░ рдЖрдЦрд┐рд░реА рджрд╕рд╡реАрдВ рд╣реИред
рдпрджрд┐ рд╣рдо "===" рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдЭреВрдареЗ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдорд╛рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВред15. рджреЛ рд╕рдорд╛рди рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд рдХреНрдпреЛрдВ рд╣реИ?
let a = {
a: 1
}
let b = {
a: 1
}
let c = a
console.log(a === b)
console.log(a === c)
рдЬреЗрдПрд╕ рдореЗрдВ, рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЖрджрд┐рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдЖрджрд┐рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдореВрд▓реНрдп рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ - рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрджрд░реНрдн рдпрд╛ рдкрддреЗ рд╕реЗ рдЬрд╣рд╛рдВ рдЪрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдЭреВрдареЗ рдФрд░ рджреВрд╕рд░рд╛ рд░рд┐рдЯрд░реНрди рд╕рд╣реА рд╣реИред рдЪрд░ "рдП" рдФрд░ "рд╕реА" рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЪрд░ "рдП" рдФрд░ "рдмреА" рд╕рдорд╛рди рдЧреБрдгреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВред16. рдСрдкрд░реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ "!!" рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдкрд░рд┐рдЪрд╛рд▓рдХ "!!" (double negation) рдореВрд▓реНрдп рдХреЛ рдЙрд╕рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рдореВрд▓реНрдп рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИредconsole.log(!!null)
console.log(!!undefined)
console.log(!!'')
console.log(!!0)
console.log(!!NaN)
console.log(!!' ')
console.log(!!{})
console.log(!![])
console.log(!!1)
console.log(!![].length)
17. рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рдХрдИ рднрд╛рд╡ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ?
рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдСрдкрд░реЗрдЯрд░ "," (рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдСрдкрд░реЗрдЯрд░ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ "рдЪрд╛рд▓" рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдпрд╛ рдСрдкрд░реЗрдВрдб рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИредlet x = 5
x = (x++, x = addFive(x), x *= 2, x -= 5, x += 10)
function addFive(num) {
return num + 5
}
рдпрджрд┐ рд╣рдо рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП x рдХрд╛ рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ 27 рдорд┐рд▓рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо x рдХрд╛ рдорд╛рди рдПрдХ (x = 6) рдмрдврд╝рд╛рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ 6 рдХреЗ рд╕рд╛рде addFive () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо 5 (x = 11) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо x рдХрд╛ рдорд╛рди 2 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ (x = 22)ред рдлрд┐рд░ 5 рдШрдЯрд╛рдПрдВ (x = 17)ред рдФрд░ рдЕрдВрдд рдореЗрдВ, 10 (x = 27) рдЬреЛрдбрд╝реЗрдВред18. рдХреНрдпрд╛ рдлрд╣рд░рд╛ рд░рд╣рд╛ рд╣реИ?
рд▓рд┐рдлреНрдЯ рдПрдХ рд╢рдмреНрдж рд╣реИ рдЬреЛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдпрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджрд╛рдпрд░реЗ рдореЗрдВ рдПрдХ рдЪрд░ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрджрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИредрдЙрддреНрдерд╛рдкрди рдХреНрдпрд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдХреНрдпрд╛ рд╣реИредрдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рд╡рд╣ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдХреЗ рджреЛ рдЪрд░рдг рд╣реИрдВ - рд╕рдВрдХрд▓рди рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрд╡рдпрдВредрд╕рдВрдХрд▓рдиред рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдВ рдФрд░ рдЪрд░ "рд╡реИрд░рд┐рдПрдмрд▓" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡реИрд╢реНрд╡рд┐рдХ (рдпрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ) рджрд╛рдпрд░реЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реГрджреНрдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреНрдпреЛрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдШреЛрд╖рдгрд╛рдПрдБ - рд▓рдЧрднрдЧредрдкреНрд░рджрд░реНрд╢рдиред рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рдЪрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рддрд░реАрдХреЗ) рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдпрд╛рдж рд░рдЦреЗрдВ: рдХреЗрд╡рд▓ '' '' '' '' '' '' '' '' '' '' '' '' рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╡ рдФрд░ рдЪрд░ рд╣реА рдЙрдард╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕, рд╕рд╛рде рд╣реА рдХреАрд╡рд░реНрдб "рд▓реЗрдЯ" рдФрд░ "рдХреЙрдиреНрд╕реНрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рд╣реИ:console.log(y)
y = 1
console.log(y)
console.log(greet('Mark'))
function greet(name) {
return 'Hello ' + name + '!'
}
var y
рд╣рдо рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, 1 рдФрд░ 'рд╣реИрд▓реЛ рдорд╛рд░реНрдХ!'редрдпрд╣рд╛рдБ рд╕рдВрдХрд▓рди рдЪрд░рдг рдХреНрдпрд╛ рд╣реИ:function greet(name) {
return 'Hello ' + name + '!'
}
var y
рд╕рдВрдХрд▓рди рдЪрд░рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рд╖реНрдкрд╛рджрди рдЪрд░рдг рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЪрд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдорд╛рди рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рддреЗ рд╣реИрдВредрдЙрддреНрдерд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ред19. рдПрдХ рд╕реНрдХреЛрдк рдХреНрдпрд╛ рд╣реИ?
рдПрдХ рд╕реНрдХреЛрдк рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ (рдпрд╛ рдЬрд╣рд╛рдВ рд╕реЗ) рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд░ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдЬреЗрдПрд╕ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдХреЛрдк рд╣реИрдВ: рд╡реИрд╢реНрд╡рд┐рдХ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдмреНрд▓реЙрдХ (рдИрдПрд╕ 6)редрдЧреНрд▓реЛрдмрд▓ рд╕реНрдХреЛрдк - рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рдлрдВрдХреНрд╢рди рдХрд╛ рдЧреНрд▓реЛрдмрд▓ рд╕реНрдХреЛрдк рд╣реИ рдФрд░ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рд╕реЗ рднреА рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
var g = 'global'
function globalFunc() {
function innerFunc() {
console.log(g)
}
innerFunc()
}
рдлрдВрдХреНрд╢рдирд▓ рд╕реНрдХреЛрдк (рдПрдХ рдлрдВрдХреНрд╢рди рдХрд╛ рд╕реНрдХреЛрдк) - рдХрд┐рд╕реА рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕, рдлрдВрдХреНрд╢рди рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрд╕ рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВредfunction myFavouriteFunc(a) {
if (true) {
var b = 'Hello ' + a
}
return b
}
myFavouriteFunc('World')
console.log(a)
console.log(b)
рдмреНрд▓реЙрдХ рд╕реНрдХреЛрдк - рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ (рдмреНрд▓реЙрдХ "({}) рдХреЗ рдЕрдВрджрд░" рд▓реЗрдЯ "рдФрд░" рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ "рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реИрдВредfunction testBlock() {
if (true) {
let z = 5
}
return z
}
testBlock()
рдПрдХ рджрд╛рдпрд░рд╛ рднреА рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЪрд░ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЪрд░ рд╡рд░реНрддрдорд╛рди рджрд╛рдпрд░реЗ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдЦреЛрдЬ рд╡рд░реНрддрдорд╛рди рдХреНрд╖реЗрддреНрд░ рдХреА рдмрд╛рд╣рд░реА рджреГрд╢реНрдпрддрд╛ рдореЗрдВ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреА рд╣реИред рдпрджрд┐ рдмрд╛рд╣рд░реА рджрд╛рдпрд░реЗ рдореЗрдВ рдХреЛрдИ рдЪрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдЦреЛрдЬ рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рддрдХ рдЬрд╛рд░реА рд╣реИред рдпрджрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдПрдХ рдЪрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЦреЛрдЬ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреЛрдЬ рдХреЛ рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдирд┐рдХрдЯ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЪрд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд╕рд╛рде рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдХреЛрдк рдЪреЗрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
var variable1 = 'Comrades'
var variable2 = 'Sayonara'
function outer() {
var variable1 = 'World'
function inner() {
var variable2 = 'Hello'
console.log(variable2 + ' ' + variable1)
}
inner()
}
outer()

20. рдХреНрд▓реЛрдЬрд░ (рдХреНрд▓реЛрдЬрд░) рдХреНрдпрд╛ рд╣реИ?
рдпрд╣ рд╢рд╛рдпрдж рд╕реВрдЪреА рд╕реЗ рд╕рдмрд╕реЗ рдХрдард┐рди рд╕рд╡рд╛рд▓ рд╣реИред рдореИрдВ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдХреИрд╕реЗ рдмрдВрдж рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВредрд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрдВрдж рдХрд░рдирд╛ рд╕реГрдЬрди рдХреЗ рд╕рдордп рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рджрд╛рдпрд░реЗ рдореЗрдВ рд╕реНрдерд┐рдд рдЪрд░ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП, рдореВрд▓ рдХрд╛рд░реНрдп рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рдореВрд▓ рдХрд╛рд░реНрдп рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЧреБрдВрдЬрд╛рдЗрд╢ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рдкрд░ред рдЖрдорддреМрд░ рдкрд░, рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕реНрдХреЛрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЙрджрд╛рд╣рд░рдг рдХреНрд▓реЛрдЬрд░ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ:
var globalVar = 'abc'
function a() {
console.log(globalVar)
}
a()
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрдм рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рдмрдВрдж рд╣реЛрдиреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
"GlobalVar" рд╡реИрд░рд┐рдПрдмрд▓ рддрд╕реНрд╡реАрд░ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛рдБ рдФрд░ рдХрдм рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, GlobalVar рдХрд╛ рдорд╛рди "abc" рд╣реЛрдЧрд╛редрдЕрдм рдЙрджрд╛рд╣рд░рдг рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ:var globalVar = 'global'
var outerVar = 'outer'
function outerFunc(outerParam) {
function innerFunc(innerParam) {
console.log(globalVar, outerParam, innerParam)
}
return innerFunc
}
const x = outerFunc(outerVar)
outerVar = 'outer-2'
globalVar = 'guess'
x('inner')
рдкрд░рд┐рдгрд╛рдо "рдмрд╛рд╣рд░реА рдЖрдВрддрд░рд┐рдХ рдЕрдиреБрдорд╛рди" рд╣реИред рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдпрд╣ рд╣реИ: рдЬрдм рд╣рдо рдЖрдЙрдЯрд░рдлрдВрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрдирд░рдлрдВрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдХреЗ рд▓рд┐рдП рдЪрд░ "x" рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ "рдЖрдЙрдЯрд░рдкрд░рдо" "рдмрд╛рд╣рд░реА" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдордиреЗ рдЪрд░ "рдмрд╛рд╣рд░реА рд╡реАрд░" рдХреЛ "рдмрд╛рд╣рд░реА -2" рдХреЛ рд╕реМрдВрдкрд╛ рд╣реИ, рдпрд╣ рдмрд╛рд╣рд░реА рдлрдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реБрдЖ рд╣реИ, рдЬреЛ рдХрд┐ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ "рдмрд╛рд╣рд░реА" рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП "рдкреНрд░рдмрдВрдзрд┐рдд" рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдорд╛рди "рдмрд╛рд╣рд░реА" рдерд╛ред рдЬрдм рд╣рдо "рдПрдХреНрд╕" рдХрд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЗрдирд░рдлрдВрдХ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ "рдЗрдирд░рдкрд╛рд░рдо" рдХрд╛ рдореВрд▓реНрдп "рдЗрдирд░" рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо "рдПрдХреНрд╕" рдХрд╣рддреЗ рд╕рдордп рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдорд╛рди рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред GlobalVar рдХрд╛ рдореВрд▓реНрдп "рдЕрдиреБрдорд╛рди" рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ "x" рдХрд╣рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдорд╛рди рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИредрдПрдХ рд╕рд░реНрдХрд┐рдЯ рдХреА рдЧрд▓рддрдлрд╣рдореА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгредconst arrFunc = []
for (var i = 0; i < 5; i++) {
arrFunc.push(function() {
return i
})
}
console.log(i)
for (let i = 0; i < arrFunc.length; i++) {
console.log(arrFunc[i]())
}
рдпрд╣ рдХреЛрдб рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реИрд░ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдЗрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдирд╛рддрд╛ рд╣реИред ArrFunc рд╕рд░рдгреА рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ "i" рдХрд╛ рдорд╛рди "5" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ "i" рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдПрдХ рдмрдВрдж рдПрдХ рдЪрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рд╕реГрдЬрди рдХреЗ рд╕рдордп рдкрд░ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдирд╣реАрдВред IIFE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ "let" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБрдмрдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ ред21. рдЬреЗрдПрд╕ рдореЗрдВ рдХреМрди рд╕реЗ рдореВрд▓реНрдп рдЭреВрдареЗ рд╣реИрдВ?
const falsyValues = ['', 0, null, undefined, NaN, false]
рдЧрд▓рдд рд╡реЗ рдореВрд▓реНрдп рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдмреВрд▓рд┐рдпрди рдореВрд▓реНрдп рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдЧрд▓рдд рд╣реИред22. рдЕрдЧрд░ рдПрдХ рдореВрд▓реНрдп рдЧрд▓рдд рд╣реИ рддреЛ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ?
рдмреБрд▓рд┐рдпрди рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ "!!" (рджреЛ рдмрд╛рд░ рдирд╣реАрдВ)ред23. рдЙрдкрдпреЛрдЧ рд╕рдЦреНрдд рдирд┐рд░реНрджреЗрд╢ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
"рд╕рдЦреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рдПрдХ ES5 рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рднреА рдХреЛрдб рдпрд╛ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдХреЛ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рд╕рдЦреНрдд рдореЛрдб рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдкрд░ рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИредрдпрд╣рд╛рдВ рд╕рдЦреНрдд рдореЛрдб рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВредрдЖрдк рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдпрд╛ рдЕрдШреЛрд╖рд┐рдд рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ:function returnY() {
'use strict'
y = 123
return y
}
returnY()
рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╡рд░реНрдЬрд┐рдд рд╣реИ:'use strict'
var NaN = NaN
var undefined = undefined
var Infinity = 'and beyond'
рдЖрдк рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА "рдирд╛рдпрд╛рдм" рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ:'use strict'
const obj = {}
Object.defineProperties(obj, 'x', {
value: 1
})
delete obj.x
рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рдирд┐рд╖рд┐рджреНрдз рд╣реИ:'use strict'
function someFunc(a, b, b, c) {}
рдЖрдк eval рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:'use strict'
eval('var x = 1')
console.log(x)
рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ:'use strict'
function showMeThis() {
return this
}
showMeThis()
тАж рдЖрджрд┐ред24. рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?
рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИред "рдЕрднреА" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВредconst carDetails = {
name: 'Ford Mustang',
yearBought: 2005,
getName() {
return this.name
}
isRegistered: true
}
console.log(carDetails.getName())
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, getName рд╡рд┐рдзрд┐ рдЗрд╕ .рдирд╛рдо рдХреЛ рд▓реМрдЯрд╛ рджреЗрддреА рд╣реИ, рдФрд░ рдпрд╣ carDetails рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ getName рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХрд╛ "рд╕реНрд╡рд╛рдореА" рд╣реИредрдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдХреЗ рдмрд╛рдж рддреАрди рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ:var name = 'Ford Ranger'
var getCarName = carDetails.getName
console.log(getCarName())
рджреВрд╕рд░рд╛ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдПрдХ рдлреЛрд░реНрдб рд░реЗрдВрдЬрд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдЬреАрдм рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ getCarName рдХрд╛ "рд╕реНрд╡рд╛рдореА" рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рд╡реИрд░рд┐рдПрдмрд▓ рд╕реНрдХреЛрдк рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдпрд╣ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдЦреНрдд рдореЛрдб рдирд╣реАрдВ рд╣реИ)редconsole.log(getCarName === window.getCarName)
console.log(getCarName === this.getCarName)
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдФрд░ рд╡рд┐рдВрдбреЛ рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВредрдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХреЙрд▓ рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ:console.log(getCarName.apply(carDetails))
console.log(getCarName.call(carDetails))
рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЛ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рд╣реЛрдЧрд╛редIIFE рдореЗрдВ, рд╡реЗ рдХрд╛рд░реНрдп рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред(function() {
console.log(this)
})()
function iHateThis() {
console.log(this)
}
iHateThis()
const myFavouriteObj = {
guessThis() {
function getName() {
console.log(this.name)
}
getName()
},
name: 'Marko Polo',
thisIsAnnoying(callback) {
callback()
}
}
myFavouriteObj.guessThis()
myFavouriteObj.thisIsAnnoying(function() {
console.log(this)
})
рдорд╛рд░реНрдХреЛ рдкреЛрд▓реЛ рдкрд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВредрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдЪрд░ рдореЗрдВ рдЗрд╕ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:const myFavoriteObj = {
guessThis() {
const self = this
function getName() {
console.log(self.name)
}
getName()
},
name: 'Marko Polo',
thisIsAnnoying(callback) {
callback()
}
}
рджреВрд╕рд░реЗ, рд╣рдо рдПрд░реЛ рдлрдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:const myFavoriteObj = {
guessThis() {
const getName = () => {
console.log(this.name)
}
getName()
},
name: 'Marko Polo',
thisIsAnnoying(callback) {
callback()
}
}
рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдпрд╣ рд╕реНрд╡рджреЗрд╢реА рдирд╣реАрдВ рд╣реИред рд╡реЗ рдмрд╛рд╣рд░реА рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдЗрд╕рдХреЗ рдЕрд░реНрде рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реИрдВред25. рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреНрдпрд╛ рд╣реИ?
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдПрдХ рд╡рд╕реНрддреБ рдХреА рдПрдХ рдпреЛрдЬрдирд╛ (рдЖрд░реЗрдЦ рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛) рд╣реИред рдпрд╣ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдордмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдЧреБрдгреЛрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рднреА рд╣реИред рдпрд╣ рдЬреЗрдПрд╕ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреА рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИредconst o = {}
console.log(o.toString())
рд╣рд╛рд▓рд╛рдВрдХрд┐ "рдУ" рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдЯрд░реНрд▓рд┐рдВрдЧ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдг рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрд╕рдХреА рдЦреЛрдЬ рдкрд╣рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЬрдм рддрдХ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ Object.prototype рд╣реИредconsole.log(o.toString === Object.prototype.toString)
рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ ред26. IIFE рдХреНрдпрд╛ рд╣реИ?
IIFE рдпрд╛ рддреБрд░рдВрдд рдЗрдирд╡реЙрдЗрд╕ рдлрдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдПрдХ рдРрд╕рд╛ рдлрдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдпрд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдмреБрд▓рд╛рдпрд╛ рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред IIFE рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЛрд╖реНрдардХ (рд╕рдореВрд╣ рд╕рдВрдЪрд╛рд▓рдХ) рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕реЗ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: (рдлрд╝рдВрдХреНрд╢рди () {}) ()ред(function( ) { }( ))
(function( ) { })( )
(function named(params) { })( )
(( ) => { })
(function(global) { })(window)
const utility = (function( ) {
return {
}
})
рдпреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдорд╛рдиреНрдп рд╣реИрдВред рдкреНрд░рдЪрд▓рд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдо IIFE рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо IIFE рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредIIFE рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдХреЛрдк рдореЗрдВ рдкреНрд░рджреВрд╖рдг (рдЧреНрд▓реЛрдмрд▓ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд╛ рдкреНрд░рджреВрд╖рдг) рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рдХреЛ рд░реЛрдХрдирд╛ рд╣реИред рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВред<script src="https://cdnurl.com/somelibrary.js"></script>
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ somelibrary.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ рдЬреЛ рдХреБрдЫ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ, createGraph рдФрд░ drawGraph, рдЬреЛ рд╣рдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВред рдФрд░ рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВредрдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдирд╛ рд╣реИ:<script src="https://cdnurl.com/somelibrary.js"></script>
<script>
function createGraph() {
}
function drawGraph() {
}
</script>
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВредрджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдмрджрд▓ рд░рд╣рд╛ рд╣реИ:<script src="https://cdnurl.com/somelibrary.js"></script>
<script>
function myCreateGraph() {
}
function myDrawGraph() {
}
</script>
рддреАрд╕рд░рд╛ рддрд░реАрдХрд╛ IIFE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:<script>
const graphUtility = (function() {
function createGraph() {
}
function drawGraph() {
}
return {
createGraph,
drawGraph
}
})
</script>
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЪрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ IIFE рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ createGraph рдФрд░ drawGraph рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВредрдпрд╣рд╛рдБ рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ IIFE рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:val li = document.querySelectorAll('.list-group > li')
for (var i - 0, len = li.length; i < len; i++) {
li[i].addEventListener('click', function(e) {
console.log(i)
})
}
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реВрдЪреА-рд╕рдореВрд╣ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 5 рдмрд╛рд▓ рддрддреНрд╡ рд▓реА рд╣реИрдВред рдФрд░ рд╣рдо рдПрдХ рдЕрд▓рдЧ "рд▓реА" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╕рдордп рдХрдВрд╕реЛрд▓ рдореЗрдВ "i" рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХрдВрд╕реЛрд▓ рд╣рдореЗрд╢рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рджреЛрд╖ рд╕рднреА рджреЛрд╖ рд╣реИредрдПрдХ рд╕рдорд╛рдзрд╛рди IIFE рд╣реИ:var li = document.querySelectorAll('.list-group > li')
for (var i = 0, len = li.length; i < len; i++) {
(function(currentIndex) {
li[currentIndex].addEventListener('click', function(e) {
console.log(currentIndex)
})
})(i)
}
рдпрд╣ рдХреЛрдб рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ IIFE рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдПрдХ рдирдпрд╛ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо currentIndex рдореЗрдВ "i" рдорд╛рди рд▓рд┐рдЦрддреЗ рд╣реИрдВред27. Function.prototyp.apply рд╡рд┐рдзрд┐ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ?
рд▓рд╛рдЧреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБ рдХреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рди рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредconst details = {
message: 'Hello World!'
}
function getMessage() {
return this.message
}
getMessage.apply(details)
рдпрд╣ рд╡рд┐рдзрд┐ Function.prototyp.call рдХреЗ рд╕рдорд╛рди рд╣реИред рдлрд░реНрдХ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдореЗрдВ, рддрд░реНрдХ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВредconst person = {
name: 'Marko Polo'
}
function greeting(greetingMessage) {
return `${greetingMessage} ${this.name}`
}
greeting.apply(person, ['Hello'])
28. function.prototype.call рд╡рд┐рдзрд┐ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ?
рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореВрд▓реНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредconst details = {
message: 'Hello World!'
};
function getMessage() {
return this.message;
}
getMessage.call(details);
рдпрд╣ рддрд░реАрдХрд╛ рдлрдВрдХреНрд╢рди.рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк.apply рдЬреИрд╕рд╛ рд╣реИред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреЙрд▓ рддрд░реНрдХреЛрдВ рдореЗрдВ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредconst person = {
name: 'Marko Polo'
};
function greeting(greetingMessage) {
return `${greetingMessage} ${this.name}`;
}
greeting.call(person, 'Hello');
29. рдХреЙрд▓ рдФрд░ рдЕрдкреНрд▓рд╛рдИ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рдХреЙрд▓ рдФрд░ рдЕрдкреНрд▓рд╛рдИ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХреЙрд▓ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ, рддрд░реНрдХреЛрдВ рдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЙрд▓ рдореЗрдВ, рдХреЙрдорд╛ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредconst obj1 = {
result: 0
}
const obj2 = {
result: 0
}
function reduceAdd() {
let result = 0
for (let i = 0, len = arguments.length; i < len; i++) {
result += arguments[i]
}
this.result = result
}
reduceAdd.apply(obj1, [1, 2, 3, 4, 5])
reduceAdd.call(obj2, 1, 2, 3, 4, 5)
30. function.prototyp.bind рд╡рд┐рдзрд┐ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ?
Bind рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдпрд╣ рдорд╛рди рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдмрд╛рдЗрдВрдб рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рддреБрд░рдВрдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВредimport React from 'react'
class MyComponent extends React.Component {
constructor(props) {
super(props)
this.state = {
value: ''
}
this.handleChange = this.handleChange.bind(this)
}
handleChange(e) {
}
render() {
return ( < >
<
input type = {
this.props.type
}
value = {
this.state.value
}
onChange = {
this.handleChange
}
/> </ >
)
}
}
31. рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЬреЗрдПрд╕ рдХреА рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ?
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдХ рдШреЛрд╖рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрд╡рдзрд╛рд░рдгрд╛ рдпрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдкреИрдЯрд░реНрди) рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреИрд╕реЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрди рддрд░реНрдХреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВредрдРрд░реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореИрдк, рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рдХрдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЙрдирдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдХрд╛рд░реНрдп рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рднреА рдХрд┐ рд╡реЗ рд╕рд░рдгреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ "рд╕рд╛рдл" рдХрд░рддрд╛ рд╣реИред JS рдореЗрдВ рдПрдХ рдХреНрд▓реЛрдЬрд░ рдФрд░ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реИрдВ рдЬреЛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВредрдирдХреНрд╢рд╛ рд╡рд┐рдзрд┐ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ:const words = ['Functional', 'Procedural', 'Object-Oriented']
const wordsLength = words.map(word => word.length)
рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рдзрд┐ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢рд░реНрдд рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рд╕рд░рдгреА рдмрдирд╛рддреА рд╣реИ:const data = {
{
name: 'Mark',
isRegistered: true
} {
name: 'Mary',
isRegistered: false
} {
name: 'Mae',
isRegistered: true
}
}
const registeredUsers = data.filter(user => user.isRegistered)
рдХрдо рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдХреЙрд▓рдмреИрдХ рдХрд░рддреА рд╣реИ, voids рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдЪрд╛рд░ рддрд░реНрдХ рд▓реЗрддреЗ рд╣реИрдВ: рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп (рдпрд╛ рдкрд┐рдЫрд▓реЗ рдХреЙрд▓рдмреИрдХ рд╕реЗ рдореВрд▓реНрдп), рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рдХрд╛ рдореВрд▓реНрдп, рд╡рд░реНрддрдорд╛рди рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╕рд░рдгреА:const strs = ['I', ' ', 'am', ' ', 'Iron', ' ', 'Man']
const result = strs.reduce((acc, currentStr) => acc + str, '')
32. рдЙрдЪреНрдЪрддрд░ рдХреНрд░рдо рдХреЗ рдХрд╛рд░реНрдп рдХреНрдпрд╛ рд╣реИрдВ?
рдПрдХ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИредfunction higherOrderFunction(param, callback) {
return callback(param)
}
33. рдЬреЗрдПрд╕ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рд╡рд╕реНрддреБ рдХреНрдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рд╡рд╕реНрддреБрдПрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЬреЗрдПрд╕ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдореВрд▓реНрдп рдХреА рддрд░рд╣ рд╣реА рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЪрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╡рд╕реНрддреБ (рд╡рд┐рдзрд┐) рдХреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдПрдХ рд╕рд░рдгреА рдХрд╛ рдПрдХ рддрддреНрд╡, рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ, рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдпред рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдореВрд▓реНрдп рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред34. рдЖрдк Array.prototype.map рдкрджреНрдзрддрд┐ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ?
function map(arr, mapCallback) {
if (!Array.isArray(arr) || !arr.length || typeof mapCallback !== 'function') {
return []
} else {
let result = []
for (let i = 0, len = arr.length; i < len; i++) {
result.push(mapCallback(arr[i], i, arr))
}
return result
}
}
рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдзрд┐ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рдмрдирд╛рддрд╛ рд╣реИред35. рдЖрдк Array.prototype.filter рдкрджреНрдзрддрд┐ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ?
function filter(arr, filterCallback) {
if (!Array.isArray(arr) || !arr.length || typeof filterCallback !== 'function') {
return []
} else {
let result = []
for (let i = 0, len = arr.length; i < len; i++) {
if (filterCallback(arr[i], i, arr)) {
result.push(arr[i])
}
}
return result
}
}
рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рдзрд┐ рдЙрди рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рдмрдирд╛рддреА рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдереЗред36. рдЖрдк Array.prototype.reduce рд╡рд┐рдзрд┐ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ?
function reduce(arr, reduceCallbak, initialValue) {
if (!Array.isArray(arr) || !arr.length || typeof filterCallback !== 'function') {
return []
} else {
let hasInitialValue = initialValue !== undefined
let value = hasInitialValue ? initialValue : arr[0]
for (let i = hasInitialValue ? 0 : 1, len = arr.length; i < len; i++) {
value = reduceCallback(value, arr[i], i, arr)
}
return value
}
}
рдХрдо рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдПрд░реЗ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ (рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ) рдкрд░ рд░рд┐рдбреНрдпреВрд╕рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдорд╛рди рд╣реЛрддрд╛ рд╣реИред37. рдПрдХ рддрд░реНрдХ рд╡рд╕реНрддреБ рдХреНрдпрд╛ рд╣реИ?
рддрд░реНрдХ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдкрд╛рд░рд┐рдд рддрд░реНрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдпрд╣ рдПрдХ рд╕рд░рдгреА рдЬреИрд╕реА рд╡рд╕реНрддреБ рд╣реИ, рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рд╣рдо рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ [i], рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ forEach, рдХрдо, рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрдЖрдк Array.prototype.slice рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:Array.prototype.slice.call(arguments)
рдпрд╛рдж рд░рдЦреЗрдВ: рддреАрд░ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рддрд░реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИредfunction one() {
return arguments
}
const two = function() {
return arguments
}
const three = function three({
return arguments
})
const four = () => arguments
four() // arguments is not defined
рдПрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛: рддрд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рд╢реЗрд╖ рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:const four = (...args) => args
рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд░рдЦреЗрдЧрд╛ред38. рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рди рд╣реЛ?
рдпрд╣ Object.create рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:const o1 = {}
console.log(o1.toString)
const o2 = Object.create(null)
console.log(o2.toString)
39. рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ рдмреА рдХреНрдпреЛрдВ рдмрдирддрд╛ рд╣реИ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?
function myFunc(){
let a = b = 0
}
myFunc()
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ ("=") рдореЗрдВ рджрд╛рд╣рд┐рдиреЗ рд╣рд╛рде рдХреА рд╕рдорд░реВрдкрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддред рджрд╛рдИрдВ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрддрд╛ рд╣реИ:function myFunc(){
let a = (b = 0)
}
myFunc()
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдорд╛рди 0 рдХреЛ рдЪрд░ "рдмреА" рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдирд╛рддрд╛ рд╣реИред рдорд╛рди (0) b = 0 рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрд╕реЗ рд╕реНрдерд╛рдиреАрдп рдЪрд░ "a" рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:function myFunc(){
let a, b
a = b = 0
}
myFunc()
40. ECMAScript рдХреНрдпрд╛ рд╣реИ?
ECMAScript рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рд╣реИ, рдПрдХ рдорд╛рдирдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ, рдпрд╣ JS рдХрд╛ рдЖрдзрд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП ECMAScript рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди JS рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВредECMA-262 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред41. ES6 рдпрд╛ ECMAScript2015 рдиреЗ рдЬреЗрдПрд╕ рдореЗрдВ рдХреНрдпрд╛ рдирдИ рдЪреАрдЬреЗрдВ рд▓рд╛рдИрдВ?
- рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕
- рдХрдХреНрд╖рд╛рдПрдВ
- рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ред
- рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╕реНрддреБ рд╢рд╛рдмреНрджрд┐рдХ
- рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА (рд╡рд╕реНрддреБ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА)ред
- рд╡рд╛рджреЗ (рд╡рд╛рджреЗ)ред
- рдЬреЗрдирд░реЗрдЯрд░
- рдореЙрдбреНрдпреВрд▓
- рдкреНрд░рддреАрдХред
- рдкреНрд░реЙрдХреНрд╕реА
- рд╕реЗрдЯред
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдкред
- рдЖрд░рд╛рдо рдХрд░реЛ рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдлреИрд▓рд╛рдУред
- рдмреНрд▓реЙрдХ рд╕реНрдХреЛрдк (рдХреАрд╡рд░реНрдб "рд▓реЗрдЯ" рдФрд░ "рдХреЙрдиреНрд╕реНрдЯ")ред
42. "var", "let" рдФрд░ "const" рдХреАрд╡рд░реНрдб рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рд╡реИрд░ рдХреАрд╡рд░реНрдб рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдШреЛрд╖рд┐рдд рдЪрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рд╕реЗ рднреА рд╕реБрд▓рдн рд╣реИрдВ:function giveMeX(showX){
if(showX){
var x = 5
}
return x
}
console.log(giveMeX(false))
console.log(giveMeX(true))
рдкрд╣рд▓реЗ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдЧрд╛, рджреВрд╕рд░рд╛ - 5. рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдЙрднрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд░ "x" рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:function giveMeX(showX){
var x
if(showX){
x = 5
}
return x
}
рдкрд╣рд▓реЗ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдШреЛрд╖рд┐рдд рдЪрд░ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЛрдИ рдорд╛рди рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред"рд▓реЗрдЯ" рдФрд░ "рдХреЙрдиреНрд╕реНрдЯ" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рд╕реНрдХреЛрдк рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдмреНрд▓реЙрдХ ({}) рдХреЗ рдЕрдВрджрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:function giveMeX(showX){
if(showX){
let x = 5
}
return x
}
function giveMeY(showY){
if(showY){
let y = 5
}
return y
}
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЭреВрдареЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд╕рдВрджрд░реНрдн рддреНрд░реБрдЯрд┐ рд╣реЛ рдЬрд╛рдПрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд╣рд░ рдЪрд░ "x" рдФрд░ "y" рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдорд╛рди рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ (рдкреЙрдк рдЕрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред"рд▓реЗрдЯ" рдФрд░ "рдХреЙрдиреНрд╕реНрдЯ" рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ - рдирд╣реАрдВ (рд╕реНрдерд┐рд░)ред рдЙрд╕реА рд╕рдордп, рд╣рдо const рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реНрд╡рдпрдВ (рдЪрд░) рдирд╣реАрдВред43. рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕) рдХреНрдпрд╛ рд╣реИрдВ?
рдЬреЗрдПрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИред рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рддреЗрдЬрд╝ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИрдВред рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, "рдлрд╝рдВрдХреНрд╢рди" рд╢рдмреНрдж рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ:
var getCurrentDate = function(){
return new Date()
}
const getCurrentDate = () => new Date()
рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ, рд╣рдо рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдЯрд░реНрди рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдмрд╢рд░реНрддреЗ рдХрд┐ рд╣рдо рдПрдХрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдпрд╛ рдорд╛рди рд▓реМрдЯрд╛рдПрдБ:
function greet(name){
return 'Hello ' + name + '!'
}
const greet = (name) => `Hello ${name}`
const greet2 = name = > `Hello ${name}`
рд╣рдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рднреА рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛:const getArgs = () => arguments
const getArgs2 = (...rest) => rest
рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рддрд░реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╛рдХреА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредconst data = {
result: 0
nums: [1,2,3,4,5]
computeResult(){
const addAll = () => {
return this.nums.reduce((total, cur) => total + cur, 0)
}
this.result = addAll()
}
}
44. рд╡рд░реНрдЧ рдХреНрдпрд╛ рд╣реИрдВ?
рдХрдХреНрд╖рд╛рдПрдВ JS рдореЗрдВ рд░рдЪрдирд╛рдХрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЪреАрдиреА рд╣реИред рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рд╣реА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рд░рд╛рд╕рдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ:
function Person(firstName, lastName, age, address){
this.firstName = firstName
this.lastName = lastName
this.age = age
this.address = address
}
Person.self = function(){
return this
}
Person.prototype.toString = function(){
return '[object Person]'
}
Person.prototype.getFullName = function(){
return this.firstName + ' ' + this.lastName
}
class Person{
constructor(firstName, lastName, age, address){
this.firstName = firstName
this.lastName = lastName
this.age = age
this.address = address
}
static self(){
return this
}
toString(){
return '[object Person]'
}
getFullName(){
return `${this.firstName} ${this.lastName}`
}
}
рдПрдХ рдЕрдиреНрдп рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рдзрд┐ рдУрд╡рд░рд░рд╛рдЗрдб рдФрд░ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо:
Employee.prototype = Object.create(Person.prototype)
function Employee(firstName, lastName, age, address, jobTitle, yearStarted){
Person.call(this, firstName, lastName, age, address)
this.jobTitle = jobTitle
this.yearStarted = yearStarted
}
Employee.prototype.describe = function(){
return `I am ${this.getFullName()} and I have a position of #{this.jobTitle} and I started at ${this.yearStarted}}`
}
Employee.prototype.toString = function(){
return '[object Employee]'
}
class Employee extends Person{
constructor(firstName, lastName, age, address, jobTitle, yearStarted){
super(firstName, lastName, age, address)
this.jobTitle = jobTitle
this.yearStarted = yearStarted
}
describe(){
return `I am ${this.getFullName()} and I have a position of #{this.jobTitle} and I started at ${this.yearStarted}}`
}
toString(){
return '[object Employee]'
}
}
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рдиреЗрдВ?class Something{ }
function AnotherSomething(){ }
const as = new AnotherSomething()
const s = new Something()
console.log(typeof Something)
console.log(typeof AnotherSomething)
console.log(as.toString())
console.log(a.toString())
console.log(as.toString === Object.prototype.toString)
console.log(a.toString === Object.prototype.toString)
45. рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд┐рдЯрд░рд▓ рдХреНрдпрд╛ рд╣реИрдВ?
рдЬреЗрдПрд╕ рдореЗрдВ рддрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рджреЛрд╣рд░реЗ рдмреИрдХрдЯрд┐рдХреНрд╕ (``) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ:
var greet = 'Hi I\'m Mark'
let greet = `Hi I'm Mark`
рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдЙрджреНрдзрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
var lastWords = '\n'
+ ' I \n'
+ ' am \n'
+ 'Iron Man \n'
let lastWords = `
I
am
Iron Man
`
рдИрдПрд╕ 6 рдореЗрдВ, рд╣рдореЗрдВ рд▓рд╛рдЗрди рдХреЛ рдлреАрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕реНрдХреЗрдк рд╕реАрдХреНрд╡реЗрдВрд╕ "\ n" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
function greet(name){
return 'Hello ' + name + '!'
}
function greet(name){
return `Hello ${name}!`
}
ES6 рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдЪрд░ рдХреЗ рд╕рд╛рде рдкрд╛рда рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдорд╡рд░реНрддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рд╣рдо рдЪрд░ рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ $ {expr} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред46. тАЛтАЛрд╡рд╕реНрддреБ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХреНрдпрд╛ рд╣реИ?
рд╡рд┐рдирд╛рд╢ рдХрд░рдирд╛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдпрд╛ рд╕рд░рдгреА рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ (рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ) рдХрд╛ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИредрдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ:const employee = {
firstName: 'Marko',
lastName: 'Polo',
position: 'Software Developer',
yearHired: 2017
}
рдкрд╣рд▓реЗ, рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЪрд░ рдмрдирд╛рдПред рдпрд╣ рдмрд╣реБрдд рдЙрдмрд╛рдК рдФрд░ рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рдерд╛:var firstName = employee.firstName
var lastName = employee.lastName
var position = employee.position
var yearHired = employee.yearHired
рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдХреНрд▓реАрдирд░ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХрдо рд╕рдордп рд▓реЗрддрд╛ рд╣реИред рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рд╣рдо рдЙрди рдЧреБрдг рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ ({}) рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд░ рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ ([]) рдореЗрдВ:let { firstName, lastName, position, yearHired } = employee
рдЪрд░ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, "propertyName: newName" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:let { firstName: fName, lastName: lName, position, yearHired } = employee
рдЪрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "propertyName = 'defaultValue' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:"let { firstName = 'Mark', lastName: lName, position, yearHired } = employee
47. рдореЙрдбреНрдпреВрд▓ рдХреНрдпрд╛ рд╣реИрдВ?
рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдХреЛрдб (рд╕рдВрдпреЛрдЬрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рдХреЛрдб рд░рдЦрдиреЗ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред рдЬреЗрдПрд╕ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рдорд░реНрдерди рдХреЛрдб рдХреЗ рд▓рд┐рдП рджреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдереЗ:- рдХреЙрдордирдЬрд╕ - рдиреЙрдбрдЬрд╕
- AMD (AsyncronousModuleDefinition) - рдмреНрд░рд╛рдЙрдЬрд╝рд░
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рд╣рдо рдЖрдпрд╛рдд рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпрд╛ рдорд╛рди рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВредрдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд):
exports.isNull = function(val){
return val === null
}
exports.isUndefined = function(val){
return val === undefined
}
exports.isNullOrUndefined = function(val){
return exports.isNull(val) || exports.isUndefined(val)
}
export function isNull(val){
return val === null;
}
export function isUndefined(val) {
return val === undefined;
}
export function isNullOrUndefined(val) {
return isNull(val) || isUndefined(val);
}
рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ:
const helpers = require('./helpers.js')
const isNull = helpers.isNull
const isUndefined = helpers.isUndefined
const isNullOrUndefined = helpers.isNullOrUndefined
const { isNull, isUndefined, isNullOrUndefined } = require('./helpers.js')
import * as helpers from './helpers.js'
import { isNull, isUndefined, isNullOrUndefined as isValid} from './helpers.js'
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд:
class Helpers {
static isNull(val){
return val === null
}
static isUndefined(val){
return val === undefined
}
static isNullOrUndefined(val){
return this.isNull(val) || this.isUndefined(val)
}
}
module.exports = Helpers
class Helpers {
static isNull(val){
return val === null
}
static isUndefined(val){
return val === undefined
}
static isNullOrUndefined(val){
return this.isNull(val) || this.isUndefined(val)
}
}
export default Helpers
рдЖрдпрд╛рдд:
const Helpers = require('./helpers.js')
console.log(Helpers.isNull(null))
import Helpers from './helpers.js'
console.log(Helpers.isNull(null))
рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдореВрд▓ рдЙрдкрдпреЛрдЧ рд╣реИред рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рдкреЛрд╕реНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИред48. рдПрдХ рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпрд╛ рд╣реИ?
рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдкрдХреЛ рдЕрдиреВрдареЗ рдорд╛рдиреЛрдВ, рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рд░: рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рд╕реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реЗрдордЬрд╝реЗрд░реЛрд╡реЗрд▓реНрдпреВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИредрд╕реЗрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп рдХреБрдЫ рдорд╛рди рднреА рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:const set1 = new Set()
const set2 = new Set(['a','b','c','d','d','e'])
рд╣рдо рдРрдб рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдорд╛рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдРрдб рд╡рд┐рдзрд┐ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЙрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:set2.add('f')
set2.add('g').add('h').add('i').add('j').add('k').add('k')
рд╣рдо рд╣рдЯрд╛рдПрдБ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рд╕реЗ рдорд╛рди рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:set2.delete('k')
set2.delete('z')
рд╣рдо рд╕реЗрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:set2.has('a')
set2.has('z')
рд╕реЗрдЯ рдХреА рд▓рдВрдмрд╛рдИ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдХрд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:set2.size
рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддреА рд╣реИ:set2.clear()
рд╣рдо рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:const nums = [1,2,3,4,5,6,6,7,8,8,5]
const uniqNums = [...new Set(nums)]
49. рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреНрдпрд╛ рд╣реИ?
рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдХреЙрд▓ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХреЛрдИ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ)редconst btnAdd = document.getElementById('btnAdd')
btnAdd.addEventListener('click', function clickCallback(e)){
}
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ "btnAdd" рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдкрд░ "рдХреНрд▓рд┐рдХ" рдШрдЯрдирд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдХреНрд▓рд┐рдХрдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдбреЗрдЯрд╛ рдпрд╛ рдИрд╡реЗрдВрдЯ рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдо, рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╛рджреГрд╢реНрдп рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐ рд╣реИ: рдЖрдк рдХрд┐рд╕реА рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЖрдк рдЙрд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдХреЙрд▓ рдпрд╛ рд╕рдВрджреЗрд╢ рдПрдХ рдШрдЯрдирд╛ рдпрд╛ рдбреЗрдЯрд╛ рд╣реИ, рдФрд░ рдПрдХ рдХреЙрд▓рдмреИрдХ рдПрдХ рд╡рд╛рдкрд╕реА рдХреЙрд▓ рдХреА рдЙрдореНрдореАрдж (рдкреНрд░рддреНрдпрд╛рд╢рд╛) рд╣реИред50. рд╡рд╛рджреЗ рдХреНрдпрд╛ рд╣реИрдВ?
рдЬреЗрдПрд╕ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рд╡рд╛рджреЗред рд╡реЗ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рддрдерд╛рдХрдерд┐рдд рдирд░рдХ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рджреЗ рдХрд┐рдП рдЧрдП рдереЗредfs.readFile('somefile.txt', function(e, data){
if(e){
console.log(e)
}
console.log(data)
})
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рддрдм рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ рдкрд╣рд▓реЗ (рдкрд╣рд▓реЗ рдХреЗ рдЕрдВрджрд░), рдлрд┐рд░ рджреВрд╕рд░реЗ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдПрдХ рдЧрдиреНрджрд╛ рдФрд░ рдЕрдкрдардиреАрдп рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ:fs.readFile('somefile.txt', function(e,data){
fs.readFile('directory', function(e, files){
fs.mkdir('directory', function(e){
})
})
})
рдФрд░ рдпрд╣рд╛рдВ рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ:promReadFile('file/path')
.then(data => {
return promReaddir('directory')
})
.then(data => {
return promMkdir('directory')
})
.catch(e => {
console.error(e)
})
рд╡рд╛рджреЗ рдХреА рдЪрд╛рд░ рд╢рд░реНрддреЗрдВ рд╣реИрдВ:- рдкреНрд░рддреАрдХреНрд╖рд╛ рдПрдХ рд╡рд╛рджреЗ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╣реИред рд╡рд╛рджреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдЬреНрдЮрд╛рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
- рд╕рдВрдкрдиреНрди - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реБрдЖ, рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИред
- рдЕрд╕реНрд╡реАрдХреГрдд - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рд╡рд┐рдлрд▓, рдПрдХ рдХрд╛рд░рдг рд╣реИред
- рдкреВрд░реНрдг - рдкреВрд░реНрдг рдпрд╛ рдЕрд╕реНрд╡реАрдХреГрддред
рдкреНрд░реЙрдорд┐рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣рд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рдореЗрдВ, рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд╕реНрд╡реАрдХрд╛рд░ рдореЗрдВ, рдСрдкрд░реЗрд╢рди рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдгред рдкрд░рд┐рдгрд╛рдо рдХреЛ .then рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рдХреЛ .catch рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред .Then рд╡рд┐рдзрд┐ рднреА рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрдИ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредconst myPromiseAsync = (...args) => {
return new Promise((resolve, reject) => {
doSomeAsync(...args, (error, data) => {
if(error){
reject(error)
} else{
resolve(data)
}
})
})
}
myPromiseAsync()
.then(result => {
console.log(result)
})
.catch(reason => {
console.error(reason)
})
рд╣рдо рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдПрдХ рд╡рд╛рджрд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ Node.js ("рдкреНрд░реЙрдорд┐рд╕рд┐рдлрд┐рдХреЗрд╢рди") рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:const toPromise = (asyncFuncWithCallback) => {
return (...args) => {
return new Promise((res, rej) => {
asyncFuncWithCallback(...args, (e, result) => {
return e ? rej(e) : res(result)
})
})
}
}
const promiseReadFile = toPromise(fs.readFile)
promiseReadFile('file/path')
.then((data) => {
console.log(data)
})
.catch(e => console.error(e))
рдЖрдк рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред51. рдПрд╕рд┐рдВрдХреНрд╕ / рд╡реЗрдЯ рдХреНрдпрд╛ рд╣реИ?
JS рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ (рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ) рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП Async / рдЗрдВрддрдЬрд╛рд░ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИред рд╡реЗ рдПрдХ рд╡рд╛рджреЗ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВред рдпрд╣ рд╡рд╛рджреЗ рдФрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рд╕реНрд╡рдЪреНрдЫ рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд╛рджреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред
function callApi(){
return fetch('url/to/api/endpoint')
.then(resp => resp.json())
.then(data => {
}).catch(err => {
})
}
async function callApi(){
try{
const resp = await fetch('url/to/api/endpoint')
const data = await res.json()
} catch(e){
}
}
рдпрд╛рдж рд░рдЦреЗрдВ: рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ async рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ:const giveMeOne = async () = 1
giveMeOne()
.then((num) => {
console.log(num)
})
рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдЗрдВрддрдЬрд╛рд░ рдХреЛрдб рдХреА рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдкрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИредconst giveMeOne = async() => 1
function getOne(){
try{
const num = await giveMeOne()
console.log(num)
} catch(e){
console.log(e)
}
}
async function getTwo(){
try{
const num1 = await giveMeOne()
const nm2 = await giveMeOne()
return num1 + num2
} catch(e){
console.log(e)
}
}
await getTwo()
рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ
async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ ред52. рдкреНрд░рд╕рд╛рд░ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдмрд╛рдХреА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рдкреНрд░рд╕рд╛рд░ рдФрд░ рдмрд╛рдХреА рдмрдпрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╣реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ ("...") рд╣реИред рдЕрдВрддрд░ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рд╕рд╛рд░ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рд╕рд░рдгреА рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдпрд╛ рдлреИрд▓рд╛рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдХреА рдХреА рдорджрдж рд╕реЗ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд░рдгреА рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ (рдпрд╛ рд╣рдо рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ)редfunction add(a, b){
return a + b
}
const nums = [5, 6]
const sum = add(...nums)
console.log(sum)
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдРрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЕрдВрдХ рд╕рд░рдгреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕реНрдкреНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЪрд░ "a" рдХрд╛ рдорд╛рди 5, b = 6, рдпреЛрдЧ = 11 рд╣реЛрдЧрд╛редfunction add(...rest){
return rest.reduce((total, current) => total + current)
}
console.log(add(1, 2))
console.log(add(1, 2, 3, 4, 5))
рдпрд╣рд╛рдВ рд╣рдо рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдРрдб рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рдЗрди рддрд░реНрдХреЛрдВ рдХрд╛ рд░рд┐рдЯрд░реНрди рдЬреЛрдбрд╝реЗрдВредconst [first, ...others] = [1, 2, 3, 4, 5]
console.log(first)
console.log(others)
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕рд░рдгреА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рджреВрд╕рд░реЛрдВ рдХреА рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреВрд╕рд░реЗ рдРрд░реЗ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред53. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреНрдпрд╛ рд╣реИрдВ?
рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд░ рдорд╛рдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИред
function add(a,b){
a = a || 0
b = b || 0
return a + b
}
function add(a = 0, b = 0){
return a + b
}
add(1)
рдЖрдк рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:function getFirst([first, ...rest] = [0, 1]){
return first
}
getFirst()
getFirst([10,20,30])
function getArr({ nums } = { nums: [1,2,3,4] }){
return nums
}
getArr
getArr({nums:[5,4,3,2,1]})
рд╣рдо рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдШреЛрд╖рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:function doSomethingWithValue(value = 'Hello World', callback = () => { console.log(value) }){
callback()
}
doSomethingWithValue()
54. рдПрдХ рд╡рд╕реНрддреБ рдЖрд╡рд░рдг (рдЖрд╡рд░рдг рд╡рд╕реНрддреБрдПрдВ) рдХреНрдпрд╛ рд╣реИ?
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╡реЗ рд╡рд╕реНрддреБрдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЖрджрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдмреВрд▓рд┐рдпрди рдореЗрдВ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ:let name = 'marko'
console.log(typeof name)
console.log(name.toUpperCase())
рдирд╛рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░) рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рдЯреЙрдкрд░рдХреИрд╕ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреА рдУрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ "MARKO" рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИредрдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдирд╛рдо рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЖрджрд┐рдо, рдЕрд╢рдХреНрдд рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдПрдХ рдЖрд╡рд░рдг рд╡рд╕реНрддреБ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдирдВрдмрд░, рдмреВрд▓рд┐рдпрди, рд╕рд┐рдВрдмрд▓ рдФрд░ рдмрд┐рдЧрдЖрдИрдВрдЯ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрддрд╛ рд╣реИ:console.log(new String(name).toUpperCase())
рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдпрд╛ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред55. рдЗрдВрдкреНрд▓рд┐рдореЗрдВрдЯ рдФрд░ рдПрдХреНрд╕рдкреНрд▓реЛрд╕рд┐рд╡ рдХреЙрд░реНрд╢рди рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рдирд┐рд╣рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рд╣рдорд╛рд░реЗ рдЬреНрдЮрд╛рди (рднрд╛рдЧреАрджрд╛рд░реА) рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдбрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИредрдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:console.log(1 + '6')
console.log(false + true)
console.log(6 * '2')
рдкрд╣рд▓реЗ рдХрдВрд╕реЛрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо 16 рд╣реЛрдЧрд╛ред рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди JS 1 рдореЗрдВ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ 6. рд╕реЗ рд╕рдВрд▓рдЧреНрди (рд╕рдВрд▓рдЧреНрди) 6. рд╣рдордиреЗ рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд░реВрдкрд╛рдВрддрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реБрдЖредрджреВрд╕рд░реЗ рдХрдВрд╕реЛрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред рдХреНрд▓реЙрдЬ 1 рд╣реЛрдЧрд╛ред рдЧрд▓рдд рдХреЛ 0 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, 1. 0 + 1 = 1 рдХреЗ рд▓рд┐рдП рд╕рд╣реАред рддреАрд╕рд░рд╛ рдХрдВрд╕реЛрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред 12. рд▓рд╛рдЗрди 2 рдХреЛ 6 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдирдВрдмрд░ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редрд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдорддрд▓рдм рд╣реИ рд╣рдорд╛рд░реА рднрд╛рдЧреАрджрд╛рд░реА рдореВрд▓реНрдп рдХреЛ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдбрд╛рд▓рдирд╛:console.log(1 + parseInt('6'))
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо parseInt рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ 6 рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рджреЛрдиреЛрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ 7 рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред56. NaN рдХреНрдпрд╛ рд╣реИ? рдпрджрд┐ рдорд╛рди NaN рд╣реИ рддреЛ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ?
NaN рдпрд╛ Not A рд╕рдВрдЦреНрдпрд╛ (рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ) рдПрдХ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдкрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рд╣реИ:let a
console.log(parseInt('abc'))
console.log(parseInt(null))
console.log(parseInt(undefined))
console.log(parseInt(++a))
console.log(parseInt({} * 10))
console.log(parseInt('abc' - 2))
console.log(parseInt(0 / 0))
console.log(parseInt('10a' * 10))
рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдИрдПрдирдПрдирдПрди рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореВрд▓реНрдп NaN рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ:console.log(isNaN())
console.log(isNaN(undefined))
console.log(isNaN({}))
console.log(isNaN(String('a')))
console.log(isNaN(() => { }))
рд╕рднреА рдХрдВрд╕реЛрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕рддреНрдп рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХреЛрдИ рднреА рдорд╛рди NaN рдирд╣реАрдВ рд╣реИредрдпрджрд┐ рдорд╛рди NaN рд╣реИ, рддреЛ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ES6 Number.isNaN рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рд▓рд┐рдП "NaN рдЕрд╕рдорд╛рдирддрд╛" рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:function checkIsNan(value){
return value !== value
}
57. рдХреИрд╕реЗ рдЪреЗрдХ рдХрд░реЗрдВ рдХрд┐ рдорд╛рди рдПрдХ рд╕рд░рдгреА рд╣реИ?
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Array.isArray рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:console.log(Array.isArray(5))
console.log(Array.isArray(''))
console.log(Array.isArray())
console.log(Array.isArray(null))
console.log(Array.isArray( {length: 5 }))
console.log(Array.isArray([]))
рдпрджрд┐ рдЖрдк рдЬрд┐рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреЙрд▓реАрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:function isArray(value){
return Object.prototype.toString.call(value) === '[object Array]'
}
58. рдпрд╣ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреЛрдИ рдореЛрдбреБрд▓реЛ рдбрд┐рд╡реАрдЬрди рдпрд╛ рдбрд┐рд╡реАрдЬрди рдХреЗ рд╕рд╛рде рд╢реЗрд╖ (рдСрдкрд░реЗрдЯрд░ "%") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╣реИ?
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдСрдкрд░реЗрдЯрд░ "рдФрд░" (рдмрд╛рдЗрдирд░реА рдФрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдСрдкрд░реЗрдЯрд░ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдмрд╛рдЗрдирд░реА рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИредfunction isEven(num){
if(num & 1){
return false
} else{
return true
}
}
рдмрд╛рдЗрдирд░реА рдиреЛрдЯреЗрд╢рди рдореЗрдВ 0 0001 рд╣реИ - рдпрд╣ 0012 - 0103 - 0114 - 1005 - 1016 - 1107 - 111, рдЖрджрд┐ рд╣реИред
Console.log (5 рдФрд░ 1) рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред 1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдФрд░ рдСрдкрд░реЗрдЯрд░ рджреЛрдиреЛрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдмрд╛рдЗрдирд░реА рдорд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, 5 101 рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, 1 001 рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдПрдХ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ:
1 рдФрд░ 0 рдХреАрддреБрд▓рдирд╛ рдХрд░реЗрдВ ред рд╣рдореЗрдВ 0 рдФрд░ 0 рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ ред , рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред1 рдФрд░ 1 рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рд╣рдо 1 рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВредрджреНрд╡рд┐рдЖрдзрд╛рд░реА рдорд╛рди рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ, рд╣рдореЗрдВ 1. рдорд┐рд▓рддрд╛ рд╣реИредрдпрджрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЖрдкрдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рд╣рдо рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:function isEven(num){
if(num < 0 || num === 1) return false
if(num == 0) return true
return isEven(num - 2)
}
59. рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВредрдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рдСрдкрд░реЗрдЯрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:const o = {
'prop': 'bwahahah',
'prop2': 'hweasa'
}
console.log('prop' in o)
console.log('prop1' in o)
рджреВрд╕рд░рд╛ hasOwnProperty рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:console.log(o.hasOwnProperty('prop2'))
console.log(o.hasOwnProperty('prop1'))
рддреАрд╕рд░рд╛ рд╕рд░рдгреА рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдВрдХреЗрддрди рд╣реИ:console.log(o['prop'])
console.log(o['prop1'])
60. AJAX рдХреНрдпрд╛ рд╣реИ?
AJAX рдпрд╛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрдХреНрд╕рдПрдордПрд▓ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЛрдб рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗрдм рдкреЗрдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдЙрд╕рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредAJAX рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:HTML - рд╡реЗрдм рдкреЗрдЬ рд╕рдВрд░рдЪрдирд╛редрд╕реАрдПрд╕рдПрд╕ - рд╡реЗрдм рдкреЗрдЬ рд╢реИрд▓рд┐рдпреЛрдВредрдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ - рдкреГрд╖реНрда рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдбреЛрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВредXMLHttpRequest API - рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛редPHP, Python, Nodejs - рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд░реНрд╡рд░ рднрд╛рд╖рд╛ред61. JS рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?
рд╡рд╕реНрддреБ рд╢рд╛рдмреНрджрд┐рдХ:const o = {
name: 'Mark',
greeting(){
return `Hi, I'm ${this.name}`
}
}
o.greeting
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди:function Person(name){
this.name = name
}
Person.prototype.greeting = function(){
return `Hi, I'm ${this.name}`
}
const mark = new Person('Mark')
mark.greeting()
Object.create рд╡рд┐рдзрд┐:const n = {
greeting(){
return `Hi, I'm ${this.name}`
}
}
const o = Object.create(n)
o.name = 'Mark'
console.log(o.greeting)
62. рдХреНрдпрд╛ рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реИ Object.freeze рдФрд░ Object.seal?
рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ Object.freeze рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓ рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ Object.seal рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИред63. рдСрдкрд░реЗрдЯрд░ рдФрд░ hasOwnProperty рд╡рд┐рдзрд┐ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ "рдЗрди" рдСрдкрд░реЗрдЯрд░ рдХреЗрд╡рд▓ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрд╕рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рднреА рд╣реИ, рдФрд░ рд╣реИрд╡реНрдирдкреНрд░реЛрдкрд░реЗрдЯреА рд╡рд┐рдзрд┐ рдореЗрдВ - рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрджрдЧреА рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИредconsole.log('prop' in o)
console.log('toString' in o)
console.log(o.hasOwnProperty('prop'))
console.log(o.hasOwnProperty('toString'))
64. рдЬреЗрдПрд╕ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреМрди рд╕реА рддрдХрдиреАрдХреЗрдВ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ?
- рдХреЙрд▓рдмреИрдХ
- рд╡рд╛рджреЗ (рд╡рд╛рджреЗ)ред
- Async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред
- Async.js, рдЦрд╛рдХрд╛, рдХреНрд╖, рд╕рд╣ рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпред
65. рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ?
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:hoistedFunc()
notHoistedFunc()
function hoistedFunc(){
console.log('I am hoisted')
}
var notHoistedFunc = function(){
console.log('I will not be hoisted!')
}
NotHoistedFunc рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди hoistedFunc рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ hoistedFunc "рдкреЙрдк рдЕрдк", рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рддрдХ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди notHoistedFunc рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред66. рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ?
рдЬреЗрдПрд╕ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ 4 рддрд░реАрдХреЗ рд╣реИрдВред рдХреЙрд▓ рдЗрд╕ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ "рдорд╛рд▓рд┐рдХ" рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИредрдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВред рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╡рд┐рдзрд┐, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдХреЙрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдорд╛рд▓рд┐рдХ рдЦрд┐рдбрд╝рдХреА рд╡рд╕реНрддреБ рд╣реИ:function add(a,b){
console.log(this)
return a + b
}
add(1,5)
const o = {
method(callback){
callback()
}
}
o.method(function(){
console.log(this)
})
рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВред рдЬрдм рдХреЛрдИ рдХрд╛рд░реНрдп рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдЧреБрдг рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВред рдЬрдм рдХреЛрдИ рд╡рд┐рдзрд┐ рдХрд╣рд▓рд╛рддреА рд╣реИ, рддреЛ рдпрд╣ рд╡рд╕реНрддреБ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рд╡рд╕реНрддреБ рдмрди рдЬрд╛рддреА рд╣реИ:const details = {
name: 'Marko',
getName(){
return this.name
}
}
details.getName()
рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВред рдЬрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди "рдирдпрд╛" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рд╣реИ:function Employee(name, position, yearHired){
this.name = name
this.position = position
this.yearHired = yearHired
}
const emp = new Employee('Marko Polo', 'Software Development', 2017)
рд▓рд╛рдЧреВ рдпрд╛ рдХреЙрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдХреЙрд▓ред рдЬрдм рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдпрд╛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реНрд╡рд╛рдореА рдХрд╛ рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:const obj1 = {
result: 0
}
const obj2 = {
result: 0
}
function reduceAdd(){
let result = 0
for(let i = 0, len = arguments.length; i < len; i++){
result += arguments[i]
}
this.result = result
}
reduceAdd.apply(obj1, [1,2,3,4,5])
reduceAdd.call(obj2, 1,2,3,4,5)
67. рд╕рдВрд╕реНрдорд░рдг рдпрд╛ рд╕рдВрд╕реНрдорд░рдг рдХреНрдпрд╛ рд╣реИ?
рдореЗрдореЛрдЗрдЬрд╝реЗрд╢рди рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рдпрд╛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрд╕реНрдорд░рдг рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕рдорд╛рди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред68. рдЖрдк рд╕рдВрд╕реНрдорд░рдг рдХреЗ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ?
function memoize(fn){
const cache = {}
return function(param){
if(cache[param]){
console.log('cached')
return cache[param]
} else{
let result = fn(param)
cache[param] = result
console.log('not cached')
return result
}
}
}
const toUpper = (str = '') => str.toUpperCase()
const toUpperMemoized = memoize(toUpper)
toUpperMemoized('abcdef')
toUpperMemoized('abcdef')
рд╣рдордиреЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдорд░рдг рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдЪрд▓реЛ рдЗрд╕реЗ "рдмрд╣реБ-рддрд░реНрдХ" рдмрдирд╛рддреЗ рд╣реИрдВ:const slice = Array.prototype.slice
function memoize(fn){
const cache = {}
return (...args) => {
const params = slice.call(args)
console.log(params)
if(cache[params]){
console.log('cached')
return cache[params]
} else{
let result = fn(...args)
cache[params] = result
console.log('not cached')
return result
}
}
}
const makeFullName = (fName, lName) => `${fName} ${lName}`
const reduceAdd = (numbers, startValue = 0) => numbers.reduce((total, cur) => total + cur, startValue)
const memoizedFullName = memoize(makeFullName)
const memoizeReduceAdd = memoize(reduceAdd)
memoizedFullName('Marko', 'Polo')
memoizedFullName('Marko', 'Polo')
memoizeReduceAdd([1,2,3,4],5)
memoizeReduceAdd([1,2,3,4],5)
69. рдЯрд╛рдЗрдкрдСрдлрд╝ рдирд▓ рдХреНрдпреЛрдВ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддрд╛ рд╣реИ? рдпрджрд┐ рдорд╛рди рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ?
рдЯрд╛рдЗрдкреЛрдлрд╝ рдирд▓ == 'рдСрдмреНрдЬреЗрдХреНрдЯ' рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд░рд╣реЗрдЧрд╛ред рдЯрд╛рдЗрдкрдСрдлрд╝ null = 'рдСрдмреНрдЬреЗрдХреНрдЯ' рдХреЛ рдЯрд╛рдЗрдкрдСрдлрд╝ null = 'null' рдореЗрдВ рдмрджрд▓рдХрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд╣рд┐рдд рдореЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕ рддрд░рд╣ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛)редрдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдорд╛рди рд╢реВрдиреНрдп рд╣реИ, рдЖрдк рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░ (===) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:function isNull(value){
return value === null
}
70. "рдирдпрд╛" рдХреАрд╡рд░реНрдб рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдХреАрд╡рд░реНрдб "рдирдпрд╛" рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдПрдХ рдирдИ рд╡рд╕реНрддреБ (рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреЛрдб рд╣реИ:function Employee(name, position, yearHired){
this.name = name
this.position = position
this.yearHired = yearHired
}
const emp = new Employee('Marko Polo', 'Software Development', 2017)
рдХреАрд╡рд░реНрдб "рдирдпрд╛" 4 рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИ:- рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИред
- рдЗрд╕ рдорд╛рди рдХреЛ рдЗрд╕реЗ рдмрд╛рдВрдзрддрд╛ рд╣реИред
- рдПрдХ рдлрд╝рдВрдХреНрд╢рди functionName.prototype рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддрд╛ рд╣реИред
- рдЗрд╕реЗ рддрдм рддрдХ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛред