/
๐Ÿ“

JavaScript Quiz

Table of contents

๋ฌธ์ œ์˜ ์ด๋ฆ„๊ณผ ํ•ด์„ค์€ ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ž‘์„ฑํ•˜์˜€๋‹ค.

Q1. ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€

javascript
function sayHi() {
console.log(name);
console.log(age);
var name = "Lydia";
let age = 21;
}
sayHi();
  • ๋‹ต: undefined, ReferenceError
  • ํ•„์š”ํ•œ ์ง€์‹: ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…, var์™€ letํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™” ์‹œ์ , ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€(TDZ)
  1. sayHi() ํ•จ์ˆ˜ ์‹คํ–‰

  2. ๋ณ€์ˆ˜ name์ด ํ˜ธ์ด์ŠคํŒ… ๋˜๋ฉด์„œ ์„ ์–ธ, ์ดˆ๊ธฐํ™” ๋˜๊ณ  undefined ํ• ๋‹น

    var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๋ฉด์„œ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด ์ง„๋‹ค.

  3. ๋ณ€์ˆ˜ age๊ฐ€ ํ˜ธ์ด์ŠคํŒ… ๋˜๋ฉด์„œ ์„ ์–ธ๋˜์ง€๋งŒ ์ดˆ๊ธฐํ™”๋Š” ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

    let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ ๋œ ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์€ ๊ฒƒ ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.

  4. console.log(name) ์‹คํ–‰, undefined ์ถœ๋ ฅ

    ๋ณ€์ˆ˜ name์˜ ๊ฐ’์€ ์•„์ง ์ดˆ๊ธฐํ™”๋งŒ ์ด๋ฃจ์–ด ์กŒ๊ธฐ ๋•Œ๋ฌธ์— undefined์ด๋‹ค.

  5. console.log(age) ์‹คํ–‰, ReferenceError(์ฐธ์กฐ ์—๋Ÿฌ) ๋ฐœ์ƒ

    ๋ณ€์ˆ˜ age๋Š” ์•„์ง ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„, TDZ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค.

  6. var name = "Lydia" ์‹คํ–‰

    ๋ณ€์ˆ˜ name์— string ํƒ€์ž…์˜ ๊ฐ’ "Lydia" ํ• ๋‹น

  7. let age = 21 ์‹คํ–‰

    ๋ณ€์ˆ˜ age ์ดˆ๊ธฐํ™”, number ํƒ€์ž…์˜ ๊ฐ’ 21 ํ• ๋‹น

sayHi() ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ ๋˜๋ฉด์„œ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ name์€ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๋ฉด์„œ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰ ๋˜๊ณ  undefined ๊ฐ’์„ ๊ฐ€์ง„ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ๋ณ€์ˆ˜ age ๋˜ํ•œ ํ˜ธ์ด์ŠคํŒ…์— ์˜ํ•ด ์„ ์–ธ๋˜์ง€๋งŒ let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋˜์—ˆ๊ธฐ์— ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๋Š” ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

L2, ๋ณ€์ˆ˜ name์„ ์ถœ๋ ฅ ํ•˜์ง€๋งŒ ๊ฐ’์€ ์•„์ง undefined์ด๋ฏ€๋กœ undefined๊ฐ€ ์ถœ๋ ฅ ๋œ๋‹ค.

L3, ๋ณ€์ˆ˜ age๋Š” ์•„์ง ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ReferenceError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

L4, ๋ณ€์ˆ˜ name์— ๋ฌธ์ž์—ด ๊ฐ’ "Lydia"๋ฅผ ํ• ๋‹นํ•œ๋‹ค. L5, ๋ณ€์ˆ˜ age ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ  ์ˆซ์ž ๊ฐ’ 21์„ ํ• ๋‹นํ•œ๋‹ค.

Q2. var์™€ let ์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„

javascript
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
  • ๋‹ต: 3 3 3, 0 1 2
  • ํ•„์š”ํ•œ ์ง€์‹: var ํ‚ค์›Œ๋“œ์™€ let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„, ์ด๋ฒคํŠธ ๋ฃจํ”„, ํƒœ์Šคํฌ ํ(์ด๋ฒคํŠธ ํ)

var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ๋งŒ์„ ์ง€์—ญ ์Šค์ฝ”ํ”„๋กœ ์ธ์ •ํ•˜๊ณ , let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์—ญ ์Šค์ฝ”ํ”„๋กœ ์ธ์ •ํ•œ๋‹ค.

  1. L1~L3 ์˜ ์ฒซ ๋ฒˆ์งธ for ๋ฌธ(๋ฃจํ”„) ์‹คํ–‰

  2. ๋ณ€์ˆ˜ i ์„ ์–ธ, ์ดˆ๊ธฐํ™”, number ํƒ€์ž…์˜ ๊ฐ’ 0 ํ• ๋‹น

    ์ด๋•Œ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ ๋ณ€์ˆ˜ i๋Š” ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.

  3. ํ‰๊ฐ€ i < 3 ๋น„๊ต (i: 0), true์ด๋ฏ€๋กœ ๋ฐ˜๋ณต ๋ฌธ ์‹คํ–‰

  4. setTimeout() ํ•จ์ˆ˜ ์‹คํ–‰, WebAPI์— ์œ„์ž„

    • setTimeout() ํ•จ์ˆ˜์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” 1ms ํ›„์— Task Queue๋กœ ์ด๋™

      ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” () => console.log(i) ์ด๋‹ค.

  5. ๋ณ€์ˆ˜ i๋Š” ++ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž์— ์˜ํ•ด 1์ด ๋œ๋‹ค.

  6. ํ‰๊ฐ€ i < 3 ๋น„๊ต (i: 1), true์ด๋ฏ€๋กœ ๋ฐ˜๋ณต ๋ฌธ ์‹คํ–‰

  7. setTimeout() ํ•จ์ˆ˜ ์‹คํ–‰, WebAPI์— ์œ„์ž„

    • setTimeout() ํ•จ์ˆ˜์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” 1ms ํ›„์— Task Queue๋กœ ์ด๋™
  8. ๋ณ€์ˆ˜ i๋Š” ++ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž์— ์˜ํ•ด 2๊ฐ€ ๋œ๋‹ค.

  9. ํ‰๊ฐ€ i < 3 ๋น„๊ต (i: 2), true์ด๋ฏ€๋กœ ๋ฐ˜๋ณต ๋ฌธ ์‹คํ–‰

  10. setTimeout() ํ•จ์ˆ˜ ์‹คํ–‰, WebAPI์— ์œ„์ž„

    • setTimeout() ํ•จ์ˆ˜์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” 1ms ํ›„์— Task Queue๋กœ ์ด๋™
  11. ๋ณ€์ˆ˜ i๋Š” ++ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž์— ์˜ํ•ด 3์ด ๋œ๋‹ค.

  12. ํ‰๊ฐ€ i < 3 ๋น„๊ต (i: 3), false์ด๋ฏ€๋กœ for ๋ฌธ ์ข…๋ฃŒ

    ์ด๋•Œ for๋ฌธ์ด ์ข…๋ฃŒ ๋˜๋ฉด์„œ Call Stack์ด ๋น„์›Œ์ง„๋‹ค.

  13. Event Loop์— ์˜ํ•ด Task Queue์— ์žˆ๋˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ Call Stack์œผ๋กœ ์ด๋™

    ์œ„ 4๋ฒˆ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜

  14. () => console.log(i) ์‹คํ–‰, 3 ์ถœ๋ ฅ

    i๋Š” ์ „์—ญ ๋ณ€์ˆ˜์ด๊ณ  11๋ฒˆ์—์„œ i์˜ ๊ฐ’์€ 3์ด ๋˜์—ˆ๋‹ค.

  15. Event Loop์— ์˜ํ•ด Task Queue์— ์žˆ๋˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ Call Stack์œผ๋กœ ์ด๋™

    ์œ„ 7๋ฒˆ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜

  16. () => console.log(i) ์‹คํ–‰, 3 ์ถœ๋ ฅ

  17. Event Loop์— ์˜ํ•ด Task Queue์— ์žˆ๋˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ Call Stack์œผ๋กœ ์ด๋™

    ์œ„ 10๋ฒˆ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜

  18. () => console.log(i) ์‹คํ–‰, 3 ์ถœ๋ ฅ

L1~L3 ์˜ ์ฒซ ๋ฒˆ์งธ for ๋ฌธ ์‹คํ–‰, var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ๋งŒ์„ ์ง€์—ญ ์Šค์ฝ”ํ”„๋กœ ์ธ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋˜๊ณ  ๋•Œ๋ฌธ์— ๋ฃจํ”„๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ  () => console.log(i) ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ ๋ ๋•Œ ์ „์—ญ ๋ณ€์ˆ˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ 3 3 3์ด ์ถœ๋ ฅ๋œ๋‹ค.

L5~L7 ์˜ ๋‘ ๋ฒˆ์งธ for ๋ฌธ ๋˜ํ•œ ์ฒซ ๋ฒˆ์งธ ๋ฃจํ”„์™€ ํฐ ์ฐจ์ด ์—†์ด ๋™์ž‘ํ•˜์ง€๋งŒ let ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ i๊ฐ€ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋Š” ํ•ด๋‹น ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•œ ๊ฒƒ์œผ๋กœ ์ธ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฃจํ”„๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ  () => console.log(i) ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ ๋ ๋•Œ ์ „์—ญ ๋ณ€์ˆ˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์•„ 0 1 2๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

for ๋ฌธ์ด ์ข…๋ฃŒ ๋˜์—ˆ์ง€๋งŒ ๊ฐ’์ด ์œ ์ง€ ๋  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฐ˜๋ณต ๋˜๋ฉด์„œ ์ƒ์„ฑ ๋œ ๊ฐ๊ฐ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์ด ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ๋‚จ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

p.s - ๋ฌธ์ œ์˜ ์˜๋„ ๋‚ด์—์„œ ์ตœ๋Œ€ํ•œ ์ž์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ ค ํ•˜๋‹ˆ ์‹œ๊ฐ„๋„ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ๋„ˆ๋ฌด ๊ณ ํ†ต์Šค๋Ÿฝ๋‹ค. ๐Ÿ˜ซ ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์จ์•ผ์ง€...

Q3. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ this

javascript
const shape = {
radius: 10,
diameter() {
return this.radius * 2;
},
perimeter: () => 2 * Math.PI * this.radius
};
console.log(shape.diameter());
console.log(shape.perimeter());
  • ๋‹ต: 20, NaN
  • ํ•„์š”ํ•œ ์ง€์‹: ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ this ๋ฐ”์ธ๋”ฉ

L6์˜ perimeter ๋ฉ”์„œ๋“œ๋Š” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ์ •์˜ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— perimeter์˜ this๋Š” ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ window๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค. ๋”ฐ๋ผ์„œ undefined์ด๊ธฐ ๋•Œ๋ฌธ์— NaN๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

TMI - NaN๋Š” 'Not a Number'์˜ ์•ฝ์ž์ด๊ณ  number ํƒ€์ž…์ด๋‹ค.

์ˆซ์ž๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์ˆซ์ž์ด๋‹ค ใ…‹ใ…‹ใ…‹์—Œใ…‹ใ…‹ใ…‹ใ…‹ใ…‹

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์ž์ฒด์— this ๋ฐ”์ธ๋”ฉ์ด ์—†๊ณ , ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋œ ์œ„์น˜์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ this๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

'ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ this'๋Š” ํ˜ธ์ถœํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค์ง€ ์•Š๊ณ , '์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ this'๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ํ”ผํ•ด์•ผ ํ•œ๋‹ค.

ECMAScript ์ŠคํŽ™์—์„œ๋Š” ES6์˜ '๋ฉ”์„œ๋“œ ์ถ•์•ฝ ํ‘œํ˜„'์„ ์‚ฌ์šฉํ•ด์•ผ ๋ฉ”์„œ๋“œ๋กœ ์ธ์ •ํ•œ๋‹ค.

Q4. ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜

javascript
+true;
!"Lydia";
  • ๋‹ต: 1, false
  • ํ•„์š”ํ•œ ์ง€์‹: ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜

L1, +true๋Š” + ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์— ์˜ํ•ด number ํƒ€์ž…์˜ ๊ฐ’ 1๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ ๋œ๋‹ค. ๋ฐ˜๋Œ€๋กœ +false์ผ ๊ฒฝ์šฐ์—๋Š” 0์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

+ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ˆซ์ž ํƒ€์ž…์˜ ๊ฐ’์ด ์•„๋‹ˆ๋ฉด ์ˆซ์ž ํƒ€์ž…์˜ ๊ฐ’์œผ๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

L2, !"Lydia"๋Š” !(๋…ผ๋ฆฌ NOT) ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์— ์˜ํ•ด boolean ํƒ€์ž…์˜ ๊ฐ’ false๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ ๋œ๋‹ค.
!"" ๊ฐ™์ด ๋นˆ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ true๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

! ์—ฐ์‚ฐ์ž๋Š” ์–ธ์ œ๋‚˜ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด ์•„๋‹ˆ๋ฉด ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜๋œ๋‹ค.

! ์—ฐ์‚ฐ์ž๋Š” ๋‹จ์ผ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ true๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ํ‰๊ฐ€๋˜๋Š” ๋…ผ๋ฆฌ๋ฅผ ๋ฐ˜์ „ ์‹œํ‚จ๋‹ค.

""๊ฐ™์ด ๋ฌธ์ž์—ด์ด ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ Falsy๋กœ ๋ณด๋Š”๋ฐ ์ด๊ฒƒ์€ ๊ฑฐ์ง“์œผ๋กœ ํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ์ด์ง€ boolean false๋ž‘์€ ๋‹ค๋ฅด๋‹ค. "strung" ๊ฐ™์ด ๋ฌธ์ž์—ด์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด Truthy๋กœ ๋ณด๊ณ  ์—ญ์‹œ true๋ž‘์€ ๋‹ค๋ฅด๋‹ค.

์ด๋ ‡๊ฒŒ '์ฐธ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฐ’(truthy)' ์ด๋‚˜ '๊ฑฐ์ง“์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฐ’(falsy)' ์ž์ฒด๋ฅผ ์กฐ๊ฑด๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๊ณ  ๋ฐ˜๋“œ์‹œ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ†ตํ•ด boolean์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

Q5.

javascript
const bird = {
size: "small"
};
const mouse = {
name: "Mickey",
small: true
};
  • ์„ ํƒ์ง€
    • A: mouse.bird.size ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์•„์š”
    • B: mouse[bird.size] ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์•„์š”
    • C: mouse[bird["size"]] ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์•„์š”
    • D: ์ด ๋ชจ๋“  ๊ฒƒ๋“ค์€ ์œ ํšจํ•ด์š”.
  • ๋‹ต: A
  • ํ•„์š”ํ•œ ์ง€์‹: ๊ฐ์ฒด์˜ ํ‚ค, ๊ฐ์ฒด ์  ํ‘œ๊ธฐ๋ฒ• ์ ‘๊ทผ, ๊ฐ์ฒด ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ• ์ ‘๊ทผ

Q6.

javascript
let c = { greeting: "Hey!" };
let d;
d = c;
c.greeting = "Hello";
console.log(d.greeting);
  • ์„ ํƒ์ง€
    • A: Hello
    • B: Hey!
    • C: undefined
    • D: ReferenceError
    • E: TypeError
  • ๋‹ต: A
  • ํ•„์š”ํ•œ ์ง€์‹: pass-by-reference, mutable value

Q7.

javascript
let a = 3;
let b = new Number(3);
let c = 3;
console.log(a == b);
console.log(a === b);
console.log(b === c);
  • ์„ ํƒ์ง€
    • A: true false true
    • B: false false true
    • C: true false false
    • D: false true true
  • ๋‹ต: C
  • ํ•„์š”ํ•œ ์ง€์‹: Number ์ƒ์„ฑ์ž ํ•จ์ˆ˜, ๋™๋“ฑ ์—ฐ์‚ฐ์ž(==), ์ผ์น˜ ์—ฐ์‚ฐ์ž(===)

L2, new Number(3)๋Š” 3์„ ํ• ๋‹นํ•œ Number ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ b๋Š” object ํƒ€์ž…์ด๋‹ค.

L5, console.log(a == b)๋Š” ๋™๋“ฑ ์—ฐ์‚ฐ์ž๋กœ ๋น„๊ตํ•˜์—ฌ ํƒ€์ž…๊ณผ ๊ด€๊ณ„์—†์ด ๊ฐ’์˜ ๋™๋“ฑ๋งŒ์„ ํŒ๋ณ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— true์ด๋‹ค.

L6, console.log(a === b)๋Š” ์ผ์น˜ ์—ฐ์‚ฐ์ž๋กœ ๋น„๊ตํ•˜์—ฌ ๊ฐ’๊ณผ ํƒ€์ž…์ด ๋ชจ๋‘ ์ผ์น˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— false์ด๋‹ค. (๋ณ€์ˆ˜ a๋Š” ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑํ•œ number ํƒ€์ž…์˜ ๊ฐ’ 3์ด๋‹ค)

Q8.

javascript
class Chameleon {
static colorChange(newColor) {
this.newColor = newColor;
return this.newColor;
}
constructor({ newColor = "green" } = {}) {
this.newColor = newColor;
}
}
const freddie = new Chameleon({ newColor: "purple" });
console.log(freddie.colorChange("orange"));
  • ์„ ํƒ์ง€
    • A: orange
    • B: purple
    • C: green
    • D: TypeError
  • ๋‹ต: D
  • ํ•„์š”ํ•œ ์ง€์‹: ํด๋ž˜์Šค, ์ธ์Šคํ„ด์Šค, ์ •์  ๋ฉ”์†Œ๋“œ

์ •์  ๋ฉ”์†Œ๋“œ์ธ colorChange()๋Š” ์ธ์Šคํ„ด์Šค freddie์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์— ์—†๋‹ค.

์ธ์Šคํ„ด์Šค freddie์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์— Chameleon ํด๋ž˜์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— colorChange()๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋ชปํ•˜๊ณ  TypeError๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํด๋ž˜์Šค๋กœ ์ƒ์„ฑํ•œ ์ธ์Šคํ„ด์Šค์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์— ํ•ด๋‹น ํด๋ž˜์Šค๋Š” ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ •์  ๋ฉ”์†Œ๋“œ ๋˜ํ•œ ์กด์žฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

ํ•œ ๋งˆ๋””๋กœ ์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค์˜ ์ •์  ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.

์ •์  ๋ฉ”์†Œ๋“œ

ํด๋ž˜์Šค์—์„œ static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •์  ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ณ , ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋œ๋‹ค.

ํด๋ž˜์Šค๋Š” ํ”„๋กœํผํ‹ฐ/๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

Class๋Š” 'ํ•จ์ˆ˜'๋กœ ํ‰๊ฐ€๋˜๊ณ  ํ•จ์ˆ˜๋Š” '์ผ๊ธ‰ ๊ฐ์ฒด'์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœํผํ‹ฐ/๋ฉ”์†Œ๋“œ๋ฅผ ์†Œ์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Q9.

javascript
let greeting; // Typo!
greetign = {};
console.log(greetign);
  • ์„ ํƒ์ง€
    • A: {}
    • B: ReferenceError: greetign is not defined
    • C: undefined
  • ๋‹ต: A

๋ณ€์ˆ˜ greetign์€ ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์„ ์–ธ ํ•˜์ง€ ์•Š์•˜๊ธฐ์— var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜ ์ฒ˜๋Ÿผ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.

strict ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ESLint ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Q10.

javascript
function bark() {
console.log("Woof!");
}
bark.animal = "dog";
  • ์„ ํƒ์ง€
    • A: ๋ณ„์ผ ์—†์–ด์š”, ์ด๊ฑด ์™„์ „ํžˆ ๊ดœ์ฐฎ์•„์š”!
    • B: SyntaxError ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ•จ์ˆ˜์— ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์–ด์š”.
    • C: "Woof"์ด ์ถœ๋ ฅ๋ผ์š”.
    • D: ReferenceError
  • ๋‹ต: A

ํ•จ์ˆ˜๋Š” '์ผ๊ธ‰ ๊ฐ์ฒด'์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœํผํ‹ฐ/๋ฉ”์†Œ๋“œ๋ฅผ ์†Œ์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Q11.

javascript
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
const member = new Person("Lydia", "Hallie");
Person.getFullName = function() {
return `${this.firstName} ${this.lastName}`;
};
console.log(member.getFullName());
  • ์„ ํƒ์ง€
    • A: TypeError
    • B: SyntaxError
    • C: Lydia Hallie
    • D: undefined undefined
  • ๋‹ต: A

Q12.

javascript
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
const lydia = new Person("Lydia", "Hallie");
const sarah = Person("Sarah", "Smith");
console.log(lydia);
console.log(sarah);
  • ์„ ํƒ์ง€
    • A: Person {firstName: "Lydia", lastName: "Hallie"} ๊ทธ๋ฆฌ๊ณ  undefined
    • B: Person {firstName: "Lydia", lastName: "Hallie"} ๊ทธ๋ฆฌ๊ณ  Person {firstName: "Sarah", lastName: "Smith"}
    • C: Person {firstName: "Lydia", lastName: "Hallie"} ๊ทธ๋ฆฌ๊ณ  {}
    • D:Person {firstName: "Lydia", lastName: "Hallie"} ๊ทธ๋ฆฌ๊ณ  ReferenceError
  • ๋‹ต: A

L10, new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ํ˜ธ์ถœ๋˜์–ด Person ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ this๋Š” ์ „์—ญ์„ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Q13. ์ด๋ฒคํŠธ ์ „๋‹ฌ์˜ 3๋‹จ๊ณ„๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

  • ์„ ํƒ์ง€
    • A: Target > Capturing > Bubbling
    • B: Bubbling > Target > Capturing
    • C: Target > Bubbling > Capturing
    • D: Capturing > Target > Bubbling
  • ๋‹ต: D

Q14. ๋ชจ๋“  ๊ฐ์ฒด๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ๊ฐ€์ ธ์š”.

  • ์„ ํƒ์ง€
    • A: true
    • B: false
  • ๋‹ต: B

ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ ์ตœ์ƒ์œ„์—๋Š” ์žˆ๋Š” Object.prototype ๊ฐ์ฒด๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

Object.prototype ๋‚ด๋ถ€ ์Šฌ๋กฏ [[Prototype]] ์˜ ๊ฐ’์€ null

์ด ์ตœ์ƒ์œ„ ๊ฐ์ฒด๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

Q15.

javascript
function sum(a, b) {
return a + b;
}
sum(1, "2");
  • ์„ ํƒ์ง€
    • A: NaN
    • B: TypeError
    • C: "12"
    • D: 3
  • ๋‹ต: C

์•”๋ฌต์  ํƒ€์ž…๋ณ€ํ™˜

Q16.

javascript
let number = 0;
console.log(number++);
console.log(++number);
console.log(number);
  • ์„ ํƒ์ง€
    • A: 1 1 2
    • B: 1 2 2
    • C: 0 2 2
    • D: 0 1 2
  • ๋‹ต: C

L2, ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๊ฐ€ ์ ‘๋ฏธ์— ์‚ฌ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 0 ์ถœ๋ ฅ ์ดํ›„ ๋ณ€์ˆ˜ number์˜ ๊ฐ’์ด 1์ฆ๊ฐ€
L3, ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๊ฐ€ ์ ‘๋‘์— ์‚ฌ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ number์˜ ๊ฐ’์ด 1์ฆ๊ฐ€ํ•˜์—ฌ 2 ์ถœ๋ ฅ

Q17.

javascript
function getPersonInfo(one, two, three) {
console.log(one);
console.log(two);
console.log(three);
}
const person = "Lydia";
const age = 21;
getPersonInfo`${person} is ${age} years old`;
  • ์„ ํƒ์ง€
    • A: "Lydia" 21 ["", " is ", " years old"]
    • B: ["", " is ", " years old"] "Lydia" 21
    • C: "Lydia" ["", " is ", " years old"] 21
  • ๋‹ต: B

์ฒ˜์Œ๋ณด๋Š” ๋ฌธ๋ฒ•์ด๋ผ ๋‹นํ™ฉ์Šค๋Ÿฝ๋‹ค ๐Ÿ˜ฏ

Tagged templates์ด๋ผ๊ณ  ํ•œ๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ Template literals - JavaScript | MDN ์ฐธ๊ณ 

Q18.

javascript
function checkAge(data) {
if (data === { age: 18 }) {
console.log("You are an adult!");
} else if (data == { age: 18 }) {
console.log("You are still an adult.");
} else {
console.log(`Hmm.. You don't have an age I guess`);
}
}
checkAge({ age: 18 });
  • ์„ ํƒ์ง€
    • A: You are an adult!
    • B: You are still an adult.
    • C: Hmm.. You don't have an age I guess
  • ๋‹ต: C

Reference Type์€ ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์ฐธ์กฐ๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ C

Q19.

javascript
function getAge(...args) {
console.log(typeof args);
}
getAge(21);
  • ์„ ํƒ์ง€
    • A: "number"
    • B: "array"
    • C: "object"
    • D: "NaN"
  • ๋‹ต: C

Q20.

javascript
function getAge() {
"use strict";
age = 21;
console.log(age);
}
getAge();
  • ์„ ํƒ์ง€
    • A: 21
    • B: undefined
    • C: ReferenceError
    • D: TypeError
  • ๋‹ต: C

Q21. sum์˜ ๊ฐ’์€ ๋ฌด์—‡์ผ๊นŒ์š”?

javascript
const sum = eval("10*10+5");
  • ์„ ํƒ์ง€
    • A: 105
    • B: "105"
    • C: TypeError
    • D: "10*10+5"
  • ๋‹ต: A

Q22. cool_secret์— ๋ช‡ ์‹œ๊ฐ„์ด๋‚˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?

javascript
sessionStorage.setItem("cool_secret", 123);
  • ์„ ํƒ์ง€
    • A: ์˜์›ํžˆ, ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋ผ์ง€์ง€ ์•Š์•„์š”.
    • B: ์‚ฌ์šฉ์ž๊ฐ€ ํƒญ์„ ๋‹ซ์„ ๋•Œ.
    • C: ์‚ฌ์šฉ์ž๊ฐ€ ํƒญ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ธŒ๋ผ์šฐ์ € ์ „์ฒด๋ฅผ ๋‹ซ์„ ๋•Œ.
    • D: ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์ปดํ“จํ„ฐ๋ฅผ ์ข…๋ฃŒ์‹œ์ผฐ์„ ๋•Œ.
  • ๋‹ต: B

Q23.

javascript
var num = 8;
var num = 10;
console.log(num);
  • ์„ ํƒ์ง€
    • A: 8
    • B: 10
    • C: SyntaxError
    • D: ReferenceError
  • ๋‹ต: B

p.s - ๋ฌธ์ œ์˜ ์ˆœ์„œ๊ฐ€ ๋‚œ์ด๋„์— ๋”ฐ๋ผ์„œ ์žˆ๋Š”๊ฑด ์•„๋‹Œ๊ฐ€๋ณด๋‹ค

Q24.

javascript
const obj = { 1: "a", 2: "b", 3: "c" };
const set = new Set([1, 2, 3, 4, 5]);
obj.hasOwnProperty("1");
obj.hasOwnProperty(1);
set.has("1");
set.has(1);
  • ์„ ํƒ์ง€
    • A: false true false true
    • B: false true true true
    • C: true true false true
    • D: true true true true
  • ๋‹ต: C

L4, ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” ๋ฌธ์ž์—ด(ํ˜น์€ ์‹ฌ๋ณผ) ์ด๋‹ค.
1: "a"์˜ 1์€ ์‚ฌ์‹ค ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ด๊ณ  ๋”ฐ์˜ดํ‘œ๊ฐ€ ์ƒ๋žต๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— true

L6, ๋ณ€์ˆ˜ set์€ ๋ฌธ์ž์—ด ํƒ€์ž…์˜ "1"์„ ๊ฐ€์ง€๊ณ ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ false

Q25.

javascript
const obj = { a: "one", b: "two", a: "three" };
console.log(obj);
  • ์„ ํƒ์ง€
    • A: { a: "one", b: "two" }
    • B: { b: "two", a: "three" }
    • C: { a: "three", b: "two" }
    • D: SyntaxError
  • ๋‹ต: C

a: "one"์™€ a: "three"๋Š” ๋™์ผํ•œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋’ค์—์žˆ๋Š” a: "three"๋กœ ๋Œ€์ฒด๋œ๋‹ค.

Q26. JavaScript์˜ global execution context๋Š” ๋‘๊ฐœ๋ฅผ ์ž‘์„ฑํ•ด์š”. : ์ „์—ญ๊ฐ์ฒด์™€ "this" ํ‚ค์›Œ๋“œ์—์š”.

  • ์„ ํƒ์ง€
    • A: true
    • B: false
    • C: ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์š”
  • ๋‹ต: A

๋ฌธ์ œ๊ฐ€ ๋ฌด์Šจ ๋œป์ธ์ง€ ์ž˜๋ชจ๋ฅด๊ฒ ๋‹ค.

(๋™์ž‘ํ™˜๊ฒฝ์— ๋”ฐ๋ผ์„œ) ์ „์—ญ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ „์—ญ๊ฐ์ฒด์— this๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ฑธ ์งˆ๋ฌธํ•˜๋Š”๊ฑด๊ฐ€..

p.s - ๊ณง globalThis๋กœ ํŽธํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋Š” ๋‚ ์ด ์˜จ๋‹ค. (github.com/tc39/pro...l-global)

Q27.

javascript
for (let i = 1; i < 5; i++) {
if (i === 3) continue;
console.log(i);
}
  • ์„ ํƒ์ง€
    • A: 1 2
    • B: 1 2 3
    • C: 1 2 4
    • D: 1 3 4
  • ๋‹ต: C

Q28.

javascript
String.prototype.giveLydiaPizza = () => {
return "Just give Lydia pizza already!";
};
const name = "Lydia";
name.giveLydiaPizza();
  • ์„ ํƒ์ง€
    • A: "Just give Lydia pizza already!"
    • B: TypeError: not a function
    • C: SyntaxError
    • D: undefined
  • ๋‹ต: A

Q29.

javascript
const a = {};
const b = { key: "b" };
const c = { key: "c" };
a[b] = 123;
a[c] = 456;
console.log(a[b]);
  • ์„ ํƒ์ง€
    • A: 123
    • B: 456
    • C: undefined
    • D: ReferenceError
  • ๋‹ต: B

a["[object Object]"]

Q30.

javascript
const foo = () => console.log("First");
const bar = () => setTimeout(() => console.log("Second"));
const baz = () => console.log("Third");
bar();
foo();
baz();
  • ์„ ํƒ์ง€
    • A: First Second Third
    • B: First Third Second
    • C: Second First Third
    • D: Second Third First
  • ๋‹ต: B

Q31. ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„๋•Œ event.target์€ ๋ฌด์—‡์ผ๊นŒ์š”?

html
<div onclick="console.log('first div')">
<div onclick="console.log('second div')">
<button onclick="console.log('button')">
Click!
</button>
</div>
</div>
  • ์„ ํƒ์ง€
    • A: ์™ธ๋ถ€์˜ div
    • B: ๋‚ด๋ถ€์˜ div
    • C: button
    • D: ์ค‘์ฒฉ๋œ ๋ชจ๋“  ์š”์†Œ์˜ ๋ฐฐ์—ด
  • ๋‹ต: C

Q32. p ํƒœ๊ทธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋กœ๊ทธ์˜ ์ถœ๋ ฅ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

html
<div onclick="console.log('div')">
<p onclick="console.log('p')">
Click here!
</p>
</div>
  • ์„ ํƒ์ง€
    • A: p div
    • B: div p
    • C: p
    • D: div
  • ๋‹ต: A

target์ธ <p> ํƒœ๊ทธ์—์„œ ๋ถ€ํ„ฐ ๋ฒ„๋ธ”๋ง ๋˜๋ฉด์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋™์ž‘ํ•œ๋‹ค.

Q33.

javascript
const person = { name: "Lydia" };
function sayHi(age) {
console.log(`${this.name} is ${age}`);
}
sayHi.call(person, 21);
sayHi.bind(person, 21);
  • ์„ ํƒ์ง€
    • A: undefined is 21 Lydia is 21
    • B: function function
    • C: Lydia is 21 Lydia is 21
    • D: Lydia is 21 function
  • ๋‹ต: D

Function.prototype.call() ๋ฉ”์†Œ๋“œ๋Š” ํ•จ์ˆ˜์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด this์— ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ํ˜ธ์ถœ(์‹คํ–‰)ํ•œ๋‹ค.

call() ์€ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์— ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ(๊ณ ์ฐจ ํ•จ์ˆ˜)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

Function.prototype.bind() call๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด this์— ๋ฐ”์ธ๋”ฉ ํ•˜์ง€๋งŒ ํ˜ธ์ถœ์€ ํ•˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ํ•จ์ˆ˜์˜ ๋ณต์‚ฌ๋ณธ์„ ๋ฆฌํ„ดํ•œ๋‹ค.

bind() ๋Š” ๋ฉ”์†Œ๋“œ์˜ this ์™€ ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์˜ ์ค‘์ฒฉ ํ•จ์ˆ˜์˜ this ๋ฅผ ์ผ์น˜์‹œ์ผœ์ค„ ๋•Œ ์œ ์šฉํ•˜๋‹ค.

Q34.

javascript
function sayHi() {
return (() => 0)();
}
console.log(typeof sayHi());
  • ์„ ํƒ์ง€
    • A: "object"
    • B: "number"
    • C: "function"
    • D: "undefined"
  • ๋‹ต: B

ํ•จ์ˆ˜ sayHi()๋Š” ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ด ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋Š” ์ˆซ์ž ํƒ€์ž…์˜ ๊ฐ’ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Q35. ์ด ๊ฐ’๋“ค ์ค‘ ์–ด๋Š ๊ฒƒ์ด ๊ฑฐ์ง“ ๊ฐ™์€ ๊ฐ’ ์ผ๊นŒ์š”?

javascript
0;
new Number(0);
("");
(" ");
new Boolean(false);
undefined;
  • ์„ ํƒ์ง€
    • A: 0, '', undefined
    • B: 0, new Number(0), '', new Boolean(false), undefined
    • C: 0, '', new Boolean(false), undefined
    • D: ๋ชจ๋“  ๊ฐ’์€ ๊ฑฐ์ง“
  • ๋‹ต: A

Q36.

javascript
console.log(typeof typeof 1);
  • ์„ ํƒ์ง€
    • A: "number"
    • B: "string"
    • C: "object"
    • D: "undefined"
  • ๋‹ต: B

p.s - ๐Ÿ˜ฎ... ์ƒ์ƒ๋„ ๋ชปํ•œ ๋ฌธ์ œ ใ„ด(ยฐ0ยฐ)ใ„ฑ

Q37.

javascript
const numbers = [1, 2, 3];
numbers[10] = 11;
console.log(numbers);
  • ์„ ํƒ์ง€
    • A: [1, 2, 3, 7 x null, 11]
    • B: [1, 2, 3, 11]
    • C: [1, 2, 3, 7 x empty, 11]
    • D: SyntaxError
  • ๋‹ต: C

์‹คํ–‰ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ด

numbers[3] ๋ถ€ํ„ฐ numbers[9] ์˜ ๊ฐ’์€ undefined

Q38.

javascript
(() => {
let x, y;
try {
throw new Error();
} catch (x) {
(x = 1), (y = 2);
console.log(x);
}
console.log(x);
console.log(y);
})();
  • ์„ ํƒ์ง€
    • A: 1 undefined 2
    • B: undefined undefined undefined
    • C: 1 1 2
    • D: 1 undefined undefined
  • ๋‹ต: A

Q39. JavaScript์˜ ๋ชจ๋“  ๊ฒƒ์€...

  • ์„ ํƒ์ง€
    • A: primitive ๋˜๋Š” object
    • B: function ๋˜๋Š” object
    • C: ํ•จ์ • ๋ฌธ์ œ! objects๋งŒ
    • D: number ๋˜๋Š” object
  • ๋‹ต: A

Q40.

javascript
[[0, 1], [2, 3]].reduce(
(acc, cur) => {
return acc.concat(cur);
},
[1, 2]
);
  • ์„ ํƒ์ง€
    • A: [0, 1, 2, 3, 1, 2]
    • B: [6, 1, 2]
    • C: [1, 2, 0, 1, 2, 3]
    • D: [1, 2, 6]
  • ๋‹ต: C

์ดˆ๊ธฐ๊ฐ’ [1, 2]๋ฅผ ๊ฐ€์ง€๊ณ  ์‹คํ–‰๋œ๋‹ค.

Q41.

javascript
!!null;
!!"";
!!1;
  • ์„ ํƒ์ง€
    • A: false true false
    • B: false false true
    • C: false true true
    • D: true true false
  • ๋‹ต: B

null, ""์€ Falsy

1์€ Truthy

Q42. setInterval ๋ฉ”์†Œ๋“œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ฌด์—‡์„ ๋ฆฌํ„ด ํ• ๊นŒ์š”?

javascript
setInterval(() => console.log("Hi"), 1000);
  • ์„ ํƒ์ง€
    • A: ์œ ๋‹ˆํฌํ•œ id
    • B: ์ง€์ •๋œ ๋ฐ€๋ฆฌ์ดˆ
    • C: ํ†ต๊ณผ๋œ ํ•จ์ˆ˜
    • D: undefined
  • ๋‹ต: A

์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ intervalID๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

setInterval()๊ณผ setTimeout()์€ ID๋ฅผ ๊ณต์œ ํ•œ๋‹ค.

Q43.

javascript
[..."Lydia"];
  • ์„ ํƒ์ง€
    • A: ["L", "y", "d", "i", "a"]
    • B: ["Lydia"]
    • C: [[], "Lydia"]
    • D: [["L", "y", "d", "i", "a"]]
  • ๋‹ต: A

Q44.

javascript
function* generator(i) {
yield i;
yield i * 2;
}
const gen = generator(10);
console.log(gen.next().value);
console.log(gen.next().value);
  • ์„ ํƒ์ง€
    • A: [0, 10], [10, 20]
    • B: 20, 20
    • C: 10, 20
    • D: 0, 10 ๊ทธ๋ฆฌ๊ณ  10, 20
  • ๋‹ต: C

์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” yield ํ‚ค์›Œ๋“œ๋ฅผ ๋งŒ๋‚˜๋ฉด ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ณ  ๋’ค์— ์žˆ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

L6, ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ณ  i๋ฅผ ์ˆซ์ž ๊ฐ’ 10์œผ๋กœ ์ดˆ๊ธฐํ™”

L8, next() ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ  yield i๋ฅผ ๋งŒ๋‚˜์„œ 10์„ ์ถœ๋ ฅ

L9, ๋‹ค์‹œํ•œ๋ฒˆ next() ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ  yield i * 2๋ฅผ ๋งŒ๋‚˜์„œ 20์„ ์ถœ๋ ฅ

Q45.

javascript
const firstPromise = new Promise((res, rej) => {
setTimeout(res, 500, "one");
});
const secondPromise = new Promise((res, rej) => {
setTimeout(res, 100, "two");
});
Promise.race([firstPromise, secondPromise]).then(res => console.log(res));
  • ์„ ํƒ์ง€
    • A: "one"
    • B: "two"
    • C: "two" "one"
    • D: "one" "two"
  • ๋‹ต: B

Promise.race()๋Š” ๊ฐ€์žฅ ๋จผ์ € ์ฒ˜๋ฆฌ๋œ ํ”„๋กœ๋ฏธ์Šค๊ฐ€ resolveํ•œ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ resolveํ•˜๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— secondPromise์˜ two๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

Q46.

javascript
let person = { name: "Lydia" };
const members = [person];
person = null;
console.log(members);
  • ์„ ํƒ์ง€
    • A: null
    • B: [null]
    • C: [{}]
    • D: [{ name: "Lydia" }]
  • ๋‹ต: D

L2, ๋ณ€์ˆ˜ members์˜ ๊ฐ’์€ [{ name: "Lydia" }]์ด ๋˜๊ณ  members[0]๊ณผ ๋ณ€์ˆ˜ person์€ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค.

L3, ๋ณ€์ˆ˜ person์˜ ๊ฐ’์„ null๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ๋„ members[0]์˜ ์ฐธ์กฐ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Œ€๋กœ ๋‚จ๊ฒŒ๋œ๋‹ค.

Q47.

javascript
const person = {
name: "Lydia",
age: 21
};
for (const item in person) {
console.log(item);
}
  • ์„ ํƒ์ง€
    • A: { name: "Lydia" }, { age: 21 }
    • B: "name", "age"
    • C: "Lydia", 21
    • D: ["name", "Lydia"], ["age", 21]
  • ๋‹ต: B

๊ฐ์ฒด์˜ ํ‚ค๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

javascript
const person = {
name: "Lydia",
age: 21
};
for (const item in person) {
console.log(person[item]);
}

Q48.

javascript
console.log(3 + 4 + "5");
  • ์„ ํƒ์ง€
    • A: "345"
    • B: "75"
    • C: 12
    • D: "12"
  • ๋‹ต: B

Q49. num์˜ ๊ฐ’์€ ๋ฌด์—‡์ผ๊นŒ์š”?

javascript
const num = parseInt("7*6", 10);
  • ์„ ํƒ์ง€
    • A: 42
    • B: "42"
    • C: 7
    • D: NaN
  • ๋‹ต: C

๋ฌธ์ž์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ 10์ง„์ˆ˜์ธ 7์„ ๋ณ€์ˆ˜ num์— ํ• ๋‹นํ•œ๋‹ค.

parseInt()๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ NaN๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค

Q50.

javascript
[1, 2, 3].map(num => {
if (typeof num === "number") return;
return num * 2;
});
  • ์„ ํƒ์ง€
    • A: []
    • B: [null, null, null]
    • C: [undefined, undefined, undefined]
    • D: [ 3 x empty ]
  • ๋‹ต: C

๊ฐ์ฒด ๋‚ด๋ถ€์˜ [1, 2, 3]์€ ๋ชจ๋‘ ์ˆซ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— L2์˜ if๋ฌธ์ด ์‹คํ–‰๋˜์–ด ์•”๋ฌต์ ์œผ๋กœ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Q51.

javascript
function getInfo(member, year) {
member.name = "Lydia";
year = "1998";
}
const person = { name: "Sarah" };
const birthYear = "1997";
getInfo(person, birthYear);
console.log(person, birthYear);
  • ์„ ํƒ์ง€
    • A: { name: "Lydia" }, "1997"
    • B: { name: "Sarah" }, "1998"
    • C: { name: "Lydia" }, "1998"
    • D: { name: "Sarah" }, "1997"
  • ๋‹ต: A

๋ณ€์ˆ˜ birthYear๋Š” ์›์‹œํ˜• ํƒ€์ž…(Primitive Type)์ธ ๋ฌธ์ž์—ด "1997"์ด๋‹ค.
์›์‹œํ˜•์€ pass-by-value์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ getInfo()์˜ ์ธ์ˆ˜ year๋กœ ์‚ฌ์šฉ๋ ๋•Œ ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค. ๋”ฐ๋ผ์„œ birthYear์™€ year๋Š” ๊ฐ™์€ ๋ฌธ์ž์—ด ํƒ€์ž…์˜ ๊ฐ’ "1997"์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋ฟ ์„œ๋กœ ๋‹ค๋ฅธ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ getInfo() ๋‚ด๋ถ€, L3์—์„œ year = "1998"๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋„ ๋ณ€์ˆ˜ birthYear์— ๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค.

๋ณ€์ˆ˜ person์€ ๊ฐ์ฒด ํƒ€์ž…(Object Type)์ด๋‹ค.
๊ฐ์ฒด ํƒ€์ž…์€ pass-by-reference์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ getInfo()์˜ ์ธ์ˆ˜ member๋กœ ์‚ฌ์šฉ๋ ๋•Œ (๋ฉ”๋ชจ๋ฆฌ์˜) ์ฐธ์กฐ ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ person๊ณผ member๋Š” ๊ฐ™์€ ๊ณณ์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ getInfo() ๋‚ด๋ถ€, L2์—์„œ member.name = "Lydia"๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ณ€์ˆ˜ person๋„ ์˜ํ–ฅ์„ ๋ฐ›์•„ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

๋ณ€์ˆ˜ person์ด const ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์„ ์–ธ๋˜์—ˆ๋‹ค ํ•ด๋„ ๊ฐ’์„ ๊ฐ์ฒด๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์žฌํ• ๋‹น๊ณผ ๊ฐ™์€ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์—†๊ฒŒ ๋ง‰์„ ์ˆ˜ ์žˆ์„ ๋ฟ, ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ์„ ๋ง‰์„์ˆ˜ ์—†๋‹ค. ๊ฐ์ฒด ํƒ€์ž…์€ ๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด ํƒ€์ž…์˜ ๊ฐ’์€ ๋ณต์‚ฌํ•˜์—ฌ ๋‹ค๋ฃจ์–ด์•ผ ํ•œ๋‹ค.

Q52.

javascript
function greeting() {
throw "Hello world!";
}
function sayHi() {
try {
const data = greeting();
console.log("It worked!", data);
} catch (e) {
console.log("Oh no an error:", e);
}
}
sayHi();
  • ์„ ํƒ์ง€
    • A: "It worked! Hello world!"
    • B: "Oh no an error: undefined"
    • C: SyntaxError: can only throw Error objects
    • D: "Oh no an error: Hello world!"
  • ๋‹ต: D

Q53.

javascript
function Car() {
this.make = "Lamborghini";
return { make: "Maserati" };
}
const myCar = new Car();
console.log(myCar.make);
  • ์„ ํƒ์ง€
    • A: "Lamborghini"
    • B: "Maserati"
    • C: ReferenceError
    • D: TypeError
  • ๋‹ต: B

Q54.

javascript
(() => {
let x = (y = 10);
})();
console.log(typeof x);
console.log(typeof y);
  • ์„ ํƒ์ง€
    • A: "undefined", "number"
    • B: "number", "number"
    • C: "object", "number"
    • D: "number", "undefined"
  • ๋‹ต: A

Q55.

javascript
class Dog {
constructor(name) {
this.name = name;
}
}
Dog.prototype.bark = function() {
console.log(`Woof I am ${this.name}`);
};
const pet = new Dog("Mara");
pet.bark();
delete Dog.prototype.bark;
pet.bark();
  • ์„ ํƒ์ง€
    • A: "Woof I am Mara", TypeError
    • B: "Woof I am Mara", "Woof I am Mara"
    • C: "Woof I am Mara", undefined
    • D: TypeError, TypeError
  • ๋‹ต: A

Q56.

javascript
const set = new Set([1, 1, 2, 3, 4]);
console.log(set);
  • ์„ ํƒ์ง€
    • A: [1, 1, 2, 3, 4]
    • B: [1, 2, 3, 4]
    • C: {1, 1, 2, 3, 4}
    • D: {1, 2, 3, 4}
  • ๋‹ต: D

Q57.

javascript
// counter.js
let counter = 10;
export default counter;
javascript
// index.js
import myCounter from "./counter";
myCounter += 1;
console.log(myCounter);
  • ์„ ํƒ์ง€
    • A: 10
    • B: 11
    • C: Error
    • D: NaN
  • ๋‹ต: C

import ๋œ ๋ชจ๋“ˆ์€ read-only

Q58.

javascript
const name = "Lydia";
age = 21;
console.log(delete name);
console.log(delete age);
  • ์„ ํƒ์ง€
    • A: false, true
    • B: "Lydia", 21
    • C: true, true
    • D: undefined, undefined
  • ๋‹ต: A

delete ์—ฐ์‚ฐ์ž๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์„ฑ๊ณตํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

L2, age๋Š” ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ž„์œผ๋กœ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

Q59.

javascript
const numbers = [1, 2, 3, 4, 5];
const [y] = numbers;
console.log(y);
  • ์„ ํƒ์ง€
    • A: [[1, 2, 3, 4, 5]]
    • B: [1, 2, 3, 4, 5]
    • C: 1
    • D: [1]
  • ๋‹ต: C

numbers์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์ธ 1์„ y์— ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹นํ•œ๋‹ค.

Q60.

javascript
const user = { name: "Lydia", age: 21 };
const admin = { admin: true, ...user };
console.log(admin);
  • ์„ ํƒ์ง€
    • A: { admin: true, user: { name: "Lydia", age: 21 } }
    • B: { admin: true, name: "Lydia", age: 21 }
    • C: { admin: true, user: ["Lydia", 21] }
    • D: { admin: true }
  • ๋‹ต: B

Q61.

javascript
const person = { name: "Lydia" };
Object.defineProperty(person, "age", { value: 21 });
console.log(person);
console.log(Object.keys(person));
  • ์„ ํƒ์ง€
    • A: { name: "Lydia", age: 21 }, ["name", "age"]
    • B: { name: "Lydia", age: 21 }, ["name"]
    • C: { name: "Lydia"}, ["name", "age"]
    • D: { name: "Lydia"}, ["age"]
  • ๋‹ต: B

Object.defineProperty()๋Š” ๊ฐ์ฒด์— ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

defineProperty() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ถ”๊ฐ€ํ•œ ํ”„๋กœํผํ‹ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถˆ๋ณ€ํ•˜๊ณ  ์—ด๊ฑฐ์™€ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์ผ๋ฐ˜์ ์ธ ํ”„๋กœํผํ‹ฐ ํ• ๋‹น์„ ํ†ตํ•ด ์ถ”๊ฐ€ํ•˜๋ฉด ์—ด๊ฑฐ์™€ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Q62.

javascript
const settings = {
username: "lydiahallie",
level: 19,
health: 90
};
const data = JSON.stringify(settings, ["level", "health"]);
console.log(data);
  • ์„ ํƒ์ง€
    • A: "{"level":19, "health":90}"
    • B: "{"username": "lydiahallie"}"
    • C: "["level", "health"]"
    • D: "{"username": "lydiahallie", "level":19, "health":90}"
  • ๋‹ต: A

์ฐธ์กฐ: JSON.stringify() - JavaScript | MDN

Q63.

javascript
let num = 10;
const increaseNumber = () => num++;
const increasePassedNumber = number => number++;
const num1 = increaseNumber();
const num2 = increasePassedNumber(num1);
console.log(num1);
console.log(num2);
  • ์„ ํƒ์ง€
    • A: 10, 10
    • B: 10, 11
    • C: 11, 11
    • D: 11, 12
  • ๋‹ต: A

Q16๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ

L6, ๋ฐ˜ํ™˜ ํ›„์— ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ num1์€ ์ˆซ์ž ๊ฐ’ 10์ด๋‹ค.

ํ•จ์ˆ˜ increaseNumber()๋Š” num์˜ ์ˆซ์ž ๊ฐ’ 10์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ ‘๋ฏธ์— ์‚ฌ์šฉ๋œ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ 11 ๋œ๋‹ค.

L7, ์œ„์™€ ์œ ์‚ฌํ•˜๋‹ค. ํ•จ์ˆ˜ increasePassedNumber()์˜ ํŒŒ๋ผ๋ฏธํ„ฐ number์— ๋ณ€์ˆ˜ num1์˜ ๊ฐ’ 10์„ ์ „๋‹ฌํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

ํ•จ์ˆ˜ increaseNumber()๋Š” L1์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ num์˜ ๊ฐ’์„ ๋ณ€ํ™” ์‹œํ‚ค์ง€๋งŒ ํ•จ์ˆ˜ increasePassedNumber()๋Š” ๋ณ€์ˆ˜ num์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

Q64.

javascript
const value = { number: 10 };
const multiply = (x = { ...value }) => {
console.log(x.number *= 2);
};
multiply();
multiply();
multiply(value);
multiply(value);
  • ์„ ํƒ์ง€
    • A: 20, 40, 80, 160
    • B: 20, 40, 20, 40
    • C: 20, 20, 20, 40
    • D: NaN, NaN, 20, 40
  • ๋‹ต: C

ํ•จ์ˆ˜ multiply์˜ ํŒŒ๋ผ๋ฏธํ„ฐ x๋Š” ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜ value๋ฅผ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋กœ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ value๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฐ์ฒด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

L9, L10, multiply(value)๋Š” ๋ณ€์ˆ˜ value๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์ˆ˜์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

Q65.

javascript
[1, 2, 3, 4].reduce((x, y) => console.log(x, y));
  • ์„ ํƒ์ง€
    • A: 1 2 ๊ทธ๋ฆฌ๊ณ  3 3 ๊ทธ๋ฆฌ๊ณ  6 4
    • B: 1 2 ๊ทธ๋ฆฌ๊ณ  2 3 ๊ทธ๋ฆฌ๊ณ  3 4
    • C: 1 undefined ๊ทธ๋ฆฌ๊ณ  2 undefined ๊ทธ๋ฆฌ๊ณ  3 undefined ๊ทธ๋ฆฌ๊ณ  4 undefined
    • D: 1 2 ๊ทธ๋ฆฌ๊ณ  undefined 3 ๊ทธ๋ฆฌ๊ณ  undefined 4
  • ๋‹ต: D

Q50๊ณผ ์œ ์‚ฌ

์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๊ฐ’๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.

์ฒ˜์Œ ์ถœ๋ ฅ์—์„œ x๊ฐ€ 1์ธ ์ด์œ ๋Š” ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Q66. Dog ํด๋ž˜์Šค๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ์ž๋Š” ์–ด๋Š ๊ฒƒ์ผ๊นŒ์š”?

javascript
class Dog {
constructor(name) {
this.name = name;
}
};
class Labrador extends Dog {
// 1
constructor(name, size) {
this.size = size;
}
// 2
constructor(name, size) {
super(name);
this.size = size;
}
// 3
constructor(size) {
super(name);
this.size = size;
}
// 4
constructor(name, size) {
this.name = name;
this.size = size;
}
};
  • ์„ ํƒ์ง€
    • A: 1
    • B: 2
    • C: 3
    • D: 4
  • ๋‹ต: B

Q67.

javascript
// index.js
console.log('running index.js');
import { sum } from './sum.js';
console.log(sum(1, 2));
// sum.js
console.log('running sum.js');
export const sum = (a, b) => a + b;
  • ์„ ํƒ์ง€
    • A: running index.js, running sum.js, 3
    • B: running sum.js, running index.js, 3
    • C: running sum.js, 3, running index.js
    • D: running index.js, undefined, running sum.js
  • ๋‹ต: B

์ฐธ๊ณ : github.com/lydiahal...sues/218

Q68.

javascript
console.log(Number(2) === Number(2))
console.log(Boolean(false) === Boolean(false))
console.log(Symbol('foo') === Symbol('foo'))
  • ์„ ํƒ์ง€
    • A: true, true, false
    • B: false, true, false
    • C: true, false, true
    • D: true, true, true
  • ๋‹ต: A

symbol์€ ํ•ญ์ƒ ๊ณ ์œ ํ•˜๋‹ค.

์ฐธ๊ณ : developer.mozilla.org/ko...bol

Q69.

javascript
const name = "Lydia Hallie"
console.log(name.padStart(13))
console.log(name.padStart(2))
  • ์„ ํƒ์ง€
    • A: "Lydia Hallie", "Lydia Hallie"
    • B: " Lydia Hallie", " Lydia Hallie" ("[13x whitespace]Lydia Hallie", "[2x whitespace]Lydia Hallie")
    • C: " Lydia Hallie", "Lydia Hallie" ("[1x whitespace]Lydia Hallie", "Lydia Hallie")
    • D: "Lydia Hallie", "Lyd"
  • ๋‹ต: C

์ฐธ๊ณ : String.prototype.padStart() - JavaScript | MDN , tc39/proposal-string-pad-start-end

Q70.

javascript
console.log("๐Ÿฅ‘" + "๐Ÿ’ป");
  • ์„ ํƒ์ง€
    • A: "๐Ÿฅ‘๐Ÿ’ป"
    • B: 257548
    • C: ํ•ด๋‹น ์ฝ”๋“œ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด
    • D: ์—๋Ÿฌ
  • ๋‹ต: A

...?

Q71. console.log ํ‘œํ˜„์‹ ๋’ค์— ์–ธ๊ธ‰๋œ ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

javascript
function* startGame() {
const answer = yield "Do you love JavaScript?";
if (answer !== "Yes") {
return "Oh wow... Guess we're gone here";
}
return "JavaScript loves you back โค๏ธ";
}
const game = startGame();
console.log(/* 1 */); // Do you love JavaScript?
console.log(/* 2 */); // JavaScript loves you back โค๏ธ
  • ์„ ํƒ์ง€
    • A: game.next("Yes").value ๊ทธ๋ฆฌ๊ณ  game.next().value
    • B: game.next.value("Yes") ๊ทธ๋ฆฌ๊ณ  game.next.value()
    • C: game.next().value ๊ทธ๋ฆฌ๊ณ  game.next("Yes").value
    • D: game.next.value() ๊ทธ๋ฆฌ๊ณ  game.next.value("Yes")
  • ๋‹ต: C

Q72.

javascript
console.log(String.raw`Hello\nworld`);
  • ์„ ํƒ์ง€
    • A: Hello world!
    • B: Helloworld
    • C: Hello\nworld
    • D: Hello\nworld
  • ๋‹ต: C

String.raw ๋ฉ”์†Œ๋“œ๋Š” ์ด์Šค์ผ€์ด์Šค ๋ฌธ์ž๋ฅผ ๋ฌด์‹œํ•œ๋‹ค.

์ฐธ๊ณ : String.raw() - JavaScript | MDN

Q73.

javascript
async function getData() {
return await Promise.resolve("I made it!");
}
const data = getData();
console.log(data);
  • ์„ ํƒ์ง€
    • A: "I made it!"
    • B: Promise {<resolved>: "I made it!"}
    • C: Promise {<pending>}
    • D: undefined
  • ๋‹ต: C

Q74.

javascript
function addToList(item, list) {
return list.push(item);
}
const result = addToList("apple", ["banana"]);
console.log(result);
  • ์„ ํƒ์ง€
    • A: ['banana', 'apple']
    • B: 2
    • C: true
    • D: undefined
  • ๋‹ต: B

Array.prototype.push()๋Š” ๋ฐฐ์—ด์˜ ๋์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2

๋ฌธ์ œ ์›๋ณธ์˜ ํ•ด์„ค์— '์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฆฌํ„ดํ•ด์š”!' ๋ผ๊ณ  ์„ค๋ช…์ด ๋˜์–ด์žˆ๋Š”๋ฐ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ์˜คํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ฌธ์žฅ์ธ ๊ฒƒ ๊ฐ™๋‹ค. push() pop() unshift() shift() ์ด ๋ฉ”์†Œ๋“œ๋“ค์€ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋‘ ์›๋ณธ ๋ฐฐ์—ด์„ ์ˆ˜์ •ํ•œ๋‹ค.

p.s - ์ ๊ณ ๋ณด๋‹ˆ ๋ฐ‘์— ์ถ”๊ฐ€์ ์œผ๋กœ ์„ค๋ช…์ด ์žˆ์—ˆ๋‹ค ๐Ÿ˜…

Q75.

javascript
const box = { x: 10, y: 20 };
Object.freeze(box);
const shape = box;
shape.x = 100;
console.log(shape);
  • ์„ ํƒ์ง€
    • A: { x: 100, y: 20 }
    • B: { x: 10, y: 20 }
    • C: { x: 100 }
    • D: ReferenceError
  • ๋‹ต: B

๋ณ€์ˆ˜ box ์™€ shape๋Š” ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค. L3์—์„œ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋™๊ฒฐ์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— L6์—์„œ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

Q76.

javascript
const { name: myName } = { name: "Lydia" };
console.log(name);
  • ์„ ํƒ์ง€
    • A: "Lydia"
    • B: "myName"
    • C: undefined
    • D: ReferenceError
  • ๋‹ต: D

๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น, ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

myName์€ ๋ฌธ์ž์—ด ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์‹๋ณ„์ž์ด๋‹ค.

์ฐธ์กฐ

Q77. ์ด๊ฒƒ์€ pure ํ•จ์ˆ˜ ์ผ๊นŒ์š”?

javascript
function sum(a, b) {
return a + b;
}
  • ์„ ํƒ์ง€
    • A: Yes
    • B: No
  • ๋‹ต: A

์ˆœ์ˆ˜ ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

ํ•จ์ˆ˜ sum์— ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ด ๋™์ผํ•˜๋‹ค๋ฉด ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์ˆ˜ ํ•จ์ˆ˜์ด๋‹ค.

Q78.

javascript
const add = () => {
const cache = {};
return num => {
if (num in cache) {
return `From cache! ${cache[num]}`;
} else {
const result = num + 10;
cache[num] = result;
return `Calculated! ${result}`;
}
};
};
const addFunction = add();
console.log(addFunction(10));
console.log(addFunction(10));
console.log(addFunction(5 * 2));
  • ์„ ํƒ์ง€
    • A: Calculated! 20 Calculated! 20 Calculated! 20
    • B: Calculated! 20 From cache! 20 Calculated! 20
    • C: Calculated! 20 From cache! 20 From cache! 20
    • D: Calculated! 20 From cache! 20 Error
  • ๋‹ต: C

Q79.

javascript
const myLifeSummedUp = ["โ˜•", "๐Ÿ’ป", "๐Ÿท", "๐Ÿซ"]
for (let item in myLifeSummedUp) {
console.log(item);
}
for (let item of myLifeSummedUp) {
console.log(item);
}
  • ์„ ํƒ์ง€
    • A: 0 1 2 3 ๊ทธ๋ฆฌ๊ณ  "โ˜•" "๐Ÿ’ป" "๐Ÿท" "๐Ÿซ"
    • B: "โ˜•" "๐Ÿ’ป" "๐Ÿท" "๐Ÿซ" ๊ทธ๋ฆฌ๊ณ  "โ˜•" "๐Ÿ’ป" "๐Ÿท" "๐Ÿซ"
    • C: "โ˜•" "๐Ÿ’ป" "๐Ÿท" "๐Ÿซ" ๊ทธ๋ฆฌ๊ณ  0 1 2 3
    • D: 0 1 2 3 ๊ทธ๋ฆฌ๊ณ  {0: "โ˜•", 1: "๐Ÿ’ป", 2: "๐Ÿท", 3: "๐Ÿซ"}
  • ๋‹ต: A

Q80.

javascript
const list = [1 + 2, 1 * 2, 1 / 2]
console.log(list);
  • ์„ ํƒ์ง€
    • A: ["1 + 2", "1 * 2", "1 / 2"]
    • B: ["12", 2, 0.5]
    • C: [3, 2, 0.5]
    • D: [1, 1, 1]
  • ๋‹ต: C

Q81.

javascript
function sayHi(name) {
return `Hi there, ${name}`
}
console.log(sayHi());
  • ์„ ํƒ์ง€
    • A: Hi there,
    • B: Hi there, undefined
    • C: Hi there, null
    • D: ReferenceError
  • ๋‹ต: B

Q82.

javascript
var status = "๐Ÿ˜Ž";
setTimeout(() => {
const status = "๐Ÿ˜";
const data = {
status: "๐Ÿฅ‘",
getStatus() {
return this.status;
}
};
console.log(data.getStatus());
console.log(data.getStatus.call(this));
}, 0);
  • ์„ ํƒ์ง€
    • A: "๐Ÿฅ‘" ๊ทธ๋ฆฌ๊ณ  "๐Ÿ˜"
    • B: "๐Ÿฅ‘" ๊ทธ๋ฆฌ๊ณ  "๐Ÿ˜Ž"
    • C: "๐Ÿ˜" ๊ทธ๋ฆฌ๊ณ  "๐Ÿ˜Ž"
    • D: "๐Ÿ˜Ž" ๊ทธ๋ฆฌ๊ณ  "๐Ÿ˜Ž"
  • ๋‹ต: B

Q83.

javascript
const person = {
name: "Lydia",
age: 21
};
let city = person.city;
city = "Amsterdam";
console.log(person);
  • ์„ ํƒ์ง€
    • A: { name: "Lydia", age: 21 }
    • B: { name: "Lydia", age: 21, city: "Amsterdam" }
    • C: { name: "Lydia", age: 21, city: undefined }
    • D: "Amsterdam"
  • ๋‹ต: A

L6, ๋ณ€์ˆ˜ city๋Š” '๊ฐ์ฒด person'์ด ๊ฐ€์ง€๋Š” 'ํ”„๋กœํผํ‹ฐ city'๋ฅผ ์ฐธ์กฐํ•˜๋Š”๋ฐ person.city๋Š” ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ city์˜ ๊ฐ’์€ undefined์ด๋‹ค.

L7, ๋ณ€์ˆ˜ city์˜ ๊ฐ’์ด ๋ฌธ์ž์—ด "Amsterdam"์œผ๋กœ ๋ณ€๊ฒฝ ๋˜์—ˆ์„ ๋ฟ, ๊ฐ์ฒด person์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

Q84.

javascript
function checkAge(age) {
if (age < 18) {
const message = "Sorry, you're too young.";
} else {
const message = "Yay! You're old enough!";
}
return message;
}
console.log(checkAge(21));
  • ์„ ํƒ์ง€
    • A: "Sorry, you're too young."
    • B: "Yay! You're old enough!"
    • C: ReferenceError
    • D: undefined
  • ๋‹ต: C

let, const ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๋Š”๋‹ค.

Q85. ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋ ๊นŒ์š”?

javascript
fetch('https://www.website.com/api/user/1')
.then(res => res.json())
.then(res => console.log(res));
  • ์„ ํƒ์ง€
    • A: fetch ๋ฉ”์†Œ๋“œ์˜ ๊ฒฐ๊ณผ
    • B: fetch ๋ฉ”์†Œ๋“œ์˜ ๋‘๋ฒˆ์งธ ํ˜ธ์ถœ ๊ฒฐ๊ณผ
    • C: ์ด์ „ .then()์—์„œ callback๋œ ๊ฒฐ๊ณผ
    • D: ํ•ญ์ƒ undefined
  • ๋‹ต: C

Q86. true๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ ํ•  ์ˆ˜ ์—†๋„๋ก ์ฃผ์–ด์กŒ์„ ๋•Œ, hasName์„ true๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์–ด๋Š ๊ฒƒ ์ผ๊นŒ์š”?

javascript
function getName(name) {
const hasName = //
}
  • ์„ ํƒ์ง€
    • A: !!name
    • B: name
    • C: new Boolean(name)
    • D: name.length
  • ๋‹ต: A

Q87.

javascript
console.log("I want pizza"[0]);
  • ์„ ํƒ์ง€
    • A: """
    • B: "I"
    • C: SyntaxError
    • D: undefined
  • ๋‹ต: B

๋ฌธ์ž์—ด์€ ์œ ์‚ฌ ๋ฐฐ์—ด์ด๋‹ค.

Q88.

javascript
function sum(num1, num2 = num1) {
console.log(num1 + num2)
}
sum(10)
  • ์„ ํƒ์ง€
    • A: NaN
    • B: 20
    • C: ReferenceError
    • D: undefined
  • ๋‹ต: B

Q89.

javascript
// module.js
export default () => "Hello world"
export const name = "Lydia"
// index.js
import * as data from "./module"
console.log(data)
  • ์„ ํƒ์ง€
    • A: { default: function default(), name: "Lydia" }
    • B: { default: function default() }
    • C: { default: "Hello world", name: "Lydia" }
    • D: Global object of module.js
  • ๋‹ต: A

Q90.

javascript
class Person {
constructor(name) {
this.name = name
}
}
const member = new Person("John")
console.log(typeof member)
  • ์„ ํƒ์ง€
    • A: "class"
    • B: "function"
    • C: "object"
    • D: "string"
  • ๋‹ต: C

Q91.

javascript
let newList = [1, 2, 3].push(4)
console.log(newList.push(5))
  • ์„ ํƒ์ง€
    • A: [1, 2, 3, 4, 5]
    • B: [1, 2, 3, 5]
    • C: [1, 2, 3, 4]
    • D: Error
  • ๋‹ต: D

Q74 ์ฐธ๊ณ 

Q92.

javascript
function giveLydiaPizza() {
return "Here is pizza!"
}
const giveLydiaChocolate = () => "Here's chocolate... now go hit the gym already."
console.log(giveLydiaPizza.prototype)
console.log(giveLydiaChocolate.prototype)
  • ์„ ํƒ์ง€
    • A: { constructor: ...} { constructor: ...}
    • B: {} { constructor: ...}
    • C: { constructor: ...} {}
    • D: { constructor: ...} undefined
  • ๋‹ต: D

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” non-constructor์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.

์ฆ‰, ptototype ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†๊ณ  ํ”„๋กœํ† ํƒ€์ž…๋„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

Q93.

javascript
const person = {
name: "Lydia",
age: 21
};
for (const [x, y] of Object.entries(person)) {
console.log(x, y)
}
  • ์„ ํƒ์ง€
    • A: name Lydia ๊ทธ๋ฆฌ๊ณ  age 21
    • B: ["name", "Lydia"] ๊ทธ๋ฆฌ๊ณ  ["age", 21]
    • C: ["name", "age"] ๊ทธ๋ฆฌ๊ณ  undefined
    • D: Error
  • ๋‹ต: A

์ฐธ๊ณ  - Object.entries() - JavaScript | MDN

Q94.

javascript
function getItems(fruitList, ...args, favoriteFruit) {
return [...fruitList, ...args, favoriteFruit]
}
console.log(getItems(["banana", "apple"], "pear", "orange"));
  • ์„ ํƒ์ง€
    • A: ["banana", "apple", "pear", "orange"]
    • B: [["banana", "apple"], "pear", "orange"]
    • C: ["banana", "apple", ["pear"], "orange"]
    • D: SyntaxError
  • ๋‹ต: D

rest ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋งˆ์ง€๋ง‰์— ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

์ฐธ๊ณ  - Rest ํŒŒ๋ผ๋ฏธํ„ฐ - JavaScript | MDN

Q95.

javascript
function nums(a, b) {
if
(a > b)
console.log('a is bigger')
else
console.log('b is bigger')
return
a + b
}
console.log(nums(4, 2))
console.log(nums(1, 2))
  • ์„ ํƒ์ง€
    • A: a is bigger, 6 ๊ทธ๋ฆฌ๊ณ  b is bigger, 3
    • B: a is bigger, undefined ๊ทธ๋ฆฌ๊ณ  b is bigger, undefined
    • C: undefined ๊ทธ๋ฆฌ๊ณ  undefined
    • D: SyntaxError
  • ๋‹ต: B

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ์‚ฝ์ž…ํ•ด์ค€๋‹ค.

์ฐธ๊ณ  - Q50

Q96.

javascript
class Person {
constructor() {
this.name = "Lydia"
}
}
Person = class AnotherPerson {
constructor() {
this.name = "Sarah"
}
}
const member = new Person()
console.log(member.name)
  • ์„ ํƒ์ง€
    • A: "Lydia"
    • B: "Sarah"
    • C: Error: cannot redeclare Person
    • D: SyntaxError
  • ๋‹ต: B

Q97.

javascript
const info = {
[Symbol('a')]: 'b'
}
console.log(info)
console.log(Object.keys(info))
  • ์„ ํƒ์ง€
    • A: {Symbol('a'): 'b'} ๊ทธ๋ฆฌ๊ณ  ["{Symbol('a')"]
    • B: {} ๊ทธ๋ฆฌ๊ณ  []
    • C: { a: "b" } ๊ทธ๋ฆฌ๊ณ  ["a"]
    • D: {Symbol('a'): 'b'} ๊ทธ๋ฆฌ๊ณ  []
  • ๋‹ต: D

symbol์€ ์—ด๊ฑฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

Q98.

javascript
const getList = ([x, ...y]) => [x, y]
const getUser = user => { name: user.name, age: user.age }
const list = [1, 2, 3, 4]
const user = { name: "Lydia", age: 21 }
console.log(getList(list))
console.log(getUser(user))
  • ์„ ํƒ์ง€
    • A: [1, [2, 3, 4]] ๊ทธ๋ฆฌ๊ณ  undefined
    • B: [1, [2, 3, 4]] ๊ทธ๋ฆฌ๊ณ  { name: "Lydia", age: 21 }
    • C: [1, 2, 3, 4] ๊ทธ๋ฆฌ๊ณ  { name: "Lydia", age: 21 }
    • D: Error ๊ทธ๋ฆฌ๊ณ  { name: "Lydia", age: 21 }
  • ๋‹ต: A

L2, ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์†Œ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์•ผํ•œ๋‹ค.

Q99.

javascript
const name = "Lydia"
console.log(name())
  • ์„ ํƒ์ง€
    • A: SyntaxError
    • B: ReferenceError
    • C: TypeError
    • D: undefined
  • ๋‹ต: C

p.s - ์„ธ๋ฏธ์ฝœ๋ก  ๊ณ„์† ์•ˆ๋ถ™์–ด ์žˆ๋Š”๊ฑฐ ์‹ ๊ฒฝ์“ฐ์—ฌ ์ฃฝ๊ฒ ๋‹ค

Q100.

javascript
// ๐ŸŽ‰โœจ ์ด๋ฒˆ์ด ๋‚ด 100๋ฒˆ์งธ ์งˆ๋ฌธ์ด์—์š”! โœจ๐ŸŽ‰
const output = `${[] && 'Im'}possible!
You should${'' && `n't`} see a therapist after so much JavaScript lol`
  • ์„ ํƒ์ง€
    • A: possible! You should see a therapist after so much JavaScript lol
    • B: Impossible! You should see a therapist after so much JavaScript lol
    • C: possible! You shouldn't see a therapist after so much JavaScript lol
    • D: Impossible! You shouldn't see a therapist after so much JavaScript lol
  • ๋‹ต: B

Q101.

javascript
const one = (false || {} || null)
const two = (null || false || "")
const three = ([] || 0 || true)
console.log(one, two, three)
  • ์„ ํƒ์ง€
    • A: false null []
    • B: null "" true
    • C: {} "" []
    • D: null null true
  • ๋‹ต: C

Q102.

javascript
const myPromise = () => Promise.resolve('I have resolved!')
function firstFunction() {
myPromise().then(res => console.log(res))
console.log('second')
}
async function secondFunction() {
console.log(await myPromise())
console.log('second')
}
firstFunction()
secondFunction()
  • ์„ ํƒ์ง€
    • A: I have resolved!, second ๊ทธ๋ฆฌ๊ณ  I have resolved!, second
    • B: second, I have resolved! ๊ทธ๋ฆฌ๊ณ  second, I have resolved!
    • C: I have resolved!, second ๊ทธ๋ฆฌ๊ณ  second, I have resolved!
    • D: second, I have resolved! ๊ทธ๋ฆฌ๊ณ  I have resolved!, second
  • ๋‹ต: D

async await ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด promise๊ฐ€ resoloved ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Q103.

javascript
const set = new Set()
set.add(1)
set.add("Lydia")
set.add({ name: "Lydia" })
for (let item of set) {
console.log(item + 2)
}
  • ์„ ํƒ์ง€
    • A: 3, NaN, NaN
    • B: 3, 7, NaN
    • C: 3, Lydia2, [object Object]2
    • D: "12", Lydia2, [object Object]2
  • ๋‹ต: C

Q104.

javascript
Promise.resolve(5)
  • ์„ ํƒ์ง€
    • A: 5
    • B: Promise {: 5}
    • C: Promise {: 5}
    • D: Error
  • ๋‹ต: C

Q105.

javascript
function compareMembers(person1, person2 = person) {
if (person1 !== person2) {
console.log("Not the same!")
} else {
console.log("They are the same!")
}
}
const person = { name: "Lydia" }
compareMembers(person)
  • ์„ ํƒ์ง€
    • A: Not the same!
    • B: They are the same!
    • C: ReferenceError
    • D: SyntaxError
  • ๋‹ต: B

Q106.

javascript
const colorConfig = {
red: true,
blue: false,
green: true,
black: true,
yellow: false,
}
const colors = ["pink", "red", "blue"]
console.log(colorConfig.colors[1])
  • ์„ ํƒ์ง€
    • A: true
    • B: false
    • C: undefined
    • D: TypeError
  • ๋‹ต: D

Q107.

javascript
console.log('โค๏ธ' === 'โค๏ธ')
  • ์„ ํƒ์ง€
    • A: true
    • B: false
  • ๋‹ต: A

Q108. ๋‹ค์Œ ์ค‘ ์›๋ณธ ๋ฐฐ์—ด์„ ์ˆ˜์ •ํ•˜๋Š” method๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

javascript
const emojis = ['โœจ', '๐Ÿฅ‘', '๐Ÿ˜']
emojis.map(x => x + 'โœจ')
emojis.filter(x => x !== '๐Ÿฅ‘')
emojis.find(x => x !== '๐Ÿฅ‘')
emojis.reduce((acc, cur) => acc + 'โœจ')
emojis.slice(1, 2, 'โœจ')
emojis.splice(1, 2, 'โœจ')
  • ์„ ํƒ์ง€
    • A: All of them
    • B: map reduce slice splice
    • C: map slice splice
    • D: splice
  • ๋‹ต: D

Array.prototype.map : ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Array.prototype.filter : ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ true์ธ ์š”์†Œ์˜ ๊ฐ’๋งŒ ์ถ”์ถœํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Array.prototype.find : ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ true์ธ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Array.prototype.reduce : ๊ฐ ์š”์†Œ์— ๋ฆฌ๋“€์„œ ํ•จ์ˆ˜(์ด์ „์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์‹คํ–‰ ๋ฐ˜ํ™˜๊ฐ’์„ ์ „๋‹ฌ)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Array.prototype.slice : ์ธ์ž๋กœ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Array.prototype.splice : ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ธฐ์กด ์š”์†Œ๋ฅผ ์‚ญ์ œ, ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

Q109.

javascript
const food = ['๐Ÿ•', '๐Ÿซ', '๐Ÿฅ‘', '๐Ÿ”']
const info = { favoriteFood: food[0] }
info.favoriteFood = '๐Ÿ'
console.log(food)
  • ์„ ํƒ์ง€
    • A: ['๐Ÿ•', '๐Ÿซ', '๐Ÿฅ‘', '๐Ÿ”']
    • B: ['๐Ÿ', '๐Ÿซ', '๐Ÿฅ‘', '๐Ÿ”']
    • C: ['๐Ÿ', '๐Ÿ•', '๐Ÿซ', '๐Ÿฅ‘', '๐Ÿ”']
    • D: ReferenceError
  • ๋‹ต: A

์ด๋ชจํ‹ฐ์ฝ˜์€ ๋ฌธ์ž์—ด์ด๋‹ค. ๋”ฐ๋ผ์„œ L2์˜ favoriteFood: food[0] ๊ฐ™์ด ํ• ๋‹น์„ํ•˜๋ฉด pass-by-value๋กœ ๊ฐ’ ์ž์ฒด๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ „๋‹ฌํ•˜๊ณ  ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ›„ L4์—์„œ info.favoriteFood = '๐Ÿ' ๊ฐ™์ด ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„ food[0]์˜ ๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

Q110. ์ด ๋ฉ”์†Œ๋“œ๋Š” ๋ฌด์—‡์„ ํ• ๊นŒ์š”?

javascript
JSON.parse()
  • ์„ ํƒ์ง€
    • A: Parses JSON to a JavaScript value
    • B: Parses a JavaScript object to JSON
    • C: Parses any JavaScript value to JSON
    • D: Parses JSON to a JavaScript object only
  • ๋‹ต: A

JSON ๋ฌธ์ž์—ด์˜ ๊ตฌ๋ฌธ์œผ๋กœ JavaScript ๊ฐ’์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

  • p.s - ์ด ๋ฌธ์ œ์˜ ์„ ํƒ์ง€๋งŒ ํ•ด์„์ด ์•ˆ๋˜์–ด ์žˆ์–ด ์ถ”๊ฐ€
    • A: JSON์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • B: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • C: ์–ด๋–ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ’์ด๋“  JSON์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • D: JSON์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋กœ๋งŒ ๋ณ€ํ™˜ํ•œ๋‹ค.

Parse๋ผ๋Š” ๋‹จ์–ด์˜ ๋œป์€ ๊ตฌ๋ฌธ ๋ถ„์„, ํ˜น์€ ๊ตฌ๋ฌธ ๋ถ„์„ ๊ณผ์ • ๊ทธ ์ž์ฒด๋ฅผ ์˜๋ฏธํ•˜๋Š”๊ฒŒ ๋งž์ง€๋งŒ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ '๋ณ€ํ™˜'์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

Q111.

javascript
let name = 'Lydia'
function getName() {
console.log(name)
let name = 'Sarah'
}
getName()
  • ์„ ํƒ์ง€
    • A: Lydia
    • B: Sarah
    • C: undefined
    • D: ReferenceError
  • ๋‹ต: D

L5, ๋ณ€์ˆ˜ name์€ ํ˜ธ์ด์ŠคํŒ… ๋˜์ง€๋งŒ ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ReferenceError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Q112.

javascript
function* generatorOne() {
yield ['a', 'b', 'c'];
}
function* generatorTwo() {
yield* ['a', 'b', 'c'];
}
const one = generatorOne()
const two = generatorTwo()
console.log(one.next().value)
console.log(two.next().value)
  • ์„ ํƒ์ง€
    • A: a ๊ทธ๋ฆฌ๊ณ  a
    • B: a ๊ทธ๋ฆฌ๊ณ  undefined
    • C: ['a', 'b', 'c'] ๊ทธ๋ฆฌ๊ณ  a
    • D: a ๊ทธ๋ฆฌ๊ณ  ['a', 'b', 'c']
  • ๋‹ต: C

Q113.

javascript
console.log(`${(x => x)('I love')} to program`)
  • ์„ ํƒ์ง€
    • A: I love to program
    • B: undefined to program
    • C: ${(x => x)('I love') to program
    • D: TypeError
  • ๋‹ต: A

Q114.

javascript
let config = {
alert: setInterval(() => {
console.log('Alert!')
}, 1000)
}
config = null
  • ์„ ํƒ์ง€
    • A: setInterval ์ฝœ๋ฐฑ์€ ํ˜ธ์ถœ๋˜์ง€ ์•Š์„๊ฑฐ์—์š”
    • B: setInterval ์ฝœ๋ฐฑ์€ ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋ผ์š”
    • C: setInterval ์ฝœ๋ฐฑ์€ ์—ฌ์ „ํžˆ ๋งค ์ดˆ๋งˆ๋‹ค ํ˜ธ์ถœ๋ผ์š”
    • D: ๊ฒฐ์ฝ” config.alert()๋ฅผ ํ˜ธ์ถœ ํ•˜์ง€ ์•Š๊ณ , config ๋Š” null์ด์—์š”
  • ๋‹ต: C

Q115. ์–ด๋Š method๊ฐ€ ๊ฐ’ 'Hello world!'๋ฅผ ๋ฆฌํ„ด ํ• ๊นŒ์š”?

javascript
const myMap = new Map()
const myFunc = () => 'greeting'
myMap.set(myFunc, 'Hello world!')
//1
myMap.get('greeting')
//2
myMap.get(myFunc)
//3
myMap.get(() => 'greeting')
  • ์„ ํƒ์ง€
    • A: 1
    • B: 2
    • C: 2 ๊ทธ๋ฆฌ๊ณ  3
    • D: ๋ชจ๋‘
  • ๋‹ต: B

Q116.

javascript
const person = {
name: "Lydia",
age: 21
}
const changeAge = (x = { ...person }) => x.age += 1
const changeAgeAndName = (x = { ...person }) => {
x.age += 1
x.name = "Sarah"
}
changeAge(person)
changeAgeAndName()
console.log(person)
  • ์„ ํƒ์ง€
    • A: {name: "Sarah", age: 22}
    • B: {name: "Sarah", age: 23}
    • C: {name: "Lydia", age: 22}
    • D: {name: "Lydia", age: 23}
  • ๋‹ต: C

p.s - ์–ด๋Š์ƒˆ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญ๋œ ๋ฌธ์ œ๋Š” ์ด์ œ ๋‹ค ํ’€์—ˆ๋‹ค

Q117. Which of the following options will return 6?

javascript
function sumValues(x, y, z) {
return x + y + z;
}
  • ์„ ํƒ์ง€
    • A: sumValues([...1, 2, 3])
    • B: sumValues([...[1, 2, 3]])
    • C: sumValues(...[1, 2, 3])
    • D: sumValues([1, 2, 3])
  • ๋‹ต: C

์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด([1, 2, 3])์ด ์ „๊ฐœ๋˜์–ด ํ•จ์ˆ˜ sumValues()์˜ ํŒŒ๋ผ๋ฏธํ„ฐ x, y, z์— ๋Œ€์ž…๋œ๋‹ค.

Q118.

javascript
let num = 1;
const list = ['๐Ÿฅณ', '๐Ÿค ', '๐Ÿฅฐ', '๐Ÿคช'];
console.log(list[(num += 1)]);
  • ์„ ํƒ์ง€
    • A: ๐Ÿค 
    • B: ๐Ÿฅฐ
    • C: SyntaxError
    • D: ReferenceError
  • ๋‹ต: B

Q119.

javascript
const person = {
firstName: 'Lydia',
lastName: 'Hallie',
pet: {
name: 'Mara',
breed: 'Dutch Tulip Hound',
},
getFullName() {
return `${this.firstName} ${this.lastName}`;
},
};
console.log(person.pet?.name);
console.log(person.pet?.family?.name);
console.log(person.getFullName?.());
console.log(member.getLastName?.());
  • ์„ ํƒ์ง€
    • A: undefined undefined undefined undefined
    • B: Mara undefined Lydia Hallie undefined
    • C: Mara null Lydia Hallie null
    • D: null ReferenceError null ReferenceError
  • ๋‹ต:

์ •๋‹ต์€ B๋ผ๊ณ  ํ•˜๋Š”๋ฐ

Mara undefined Lydia Hallie ReferenceError ์•„๋‹Œ๊ฐ€..?

Q120.

javascript
const groceries = ['banana', 'apple', 'peanuts'];
if (groceries.indexOf('banana')) {
console.log('We have to buy bananas!');
} else {
console.log(`We don't have to buy bananas!`);
}
  • ์„ ํƒ์ง€
    • A: We have to buy bananas!
    • B: We don't have to buy bananas
    • C: undefined
    • D: 1
  • ๋‹ต: B

Q121.

javascript
const config = {
languages: [],
set language(lang) {
return this.languages.push(lang);
},
};
console.log(config.language);
  • ์„ ํƒ์ง€
    • A: function language(lang) { this.languages.push(lang }
    • B: 0
    • C: []
    • D: undefined
  • ๋‹ต: D

์ ‘๊ทผ์ž ํ”„๋กœํผํ‹ฐ language๋Š” getter๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•„ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.

setter๋Š” ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— language์— ์ ‘๊ทผํ•˜๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Q122.

javascript
const name = 'Lydia Hallie';
console.log(!typeof name === 'object');
console.log(!typeof name === 'string');
  • ์„ ํƒ์ง€
    • A: false true
    • B: true false
    • C: false false
    • D: true true
  • ๋‹ต: C

typeof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ž๋ฃŒํ˜•์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ typeof name์€ 'string'์„ ๋ฐ˜ํ™˜ ํ•˜์ง€๋งŒ ์•ž์— ๋…ผ๋ฆฌ NOT ์—ฐ์‚ฐ์ž ! ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— false๋กœ ํ‰๊ฐ€๋œ๋‹ค.

false === 'object', false === 'string'์€ false

Q123.

javascript
const add = x => y => z => {
console.log(x, y, z);
return x + y + z;
};
add(4)(5)(6);
  • ์„ ํƒ์ง€
    • A: 4 5 6
    • B: 6 5 4
    • C: 4 function function
    • D: undefined undefined 6
  • ๋‹ต: A

Q124.

javascript
async function* range(start, end) {
for (let i = start; i <= end; i++) {
yield Promise.resolve(i);
}
}
(async () => {
const gen = range(1, 3);
for await (const item of gen) {
console.log(item);
}
})();
  • ์„ ํƒ์ง€
    • A: Promise {1} Promise {2} Promise {3}
    • B: Promise {<pending>} Promise {<pending>} Promise {<pending>}
    • C: 1 2 3
    • D: undefined undefined undefined
  • ๋‹ต: C

Q125.

javascript
const myFunc = ({ x, y, z }) => {
console.log(x, y, z);
};
myFunc(1, 2, 3);
  • ์„ ํƒ์ง€
    • A: 1 2 3
    • B: {1: 1} {2: 2} {3: 3}
    • C: { 1: undefined } undefined undefined
    • D: undefined undefined undefined
  • ๋‹ต: D

markdown
### Q.
โ€‹```javascript
โ€‹```
- **์„ ํƒ์ง€**
-
- **๋‹ต**:
logo
Things I've Learned