๋์ ๋งํฌ :
https://www.freecodecamp.com/challenges/using-objects-for-lookups
์ด ๋์ ์์ ์ ๋ switch ๋ฌธ์ ๊ฐ์ฒด ๋ฒ์ ์ ๋ง๋ค์ด์ผํ์ต๋๋ค. ๊ฐ์ฒด ๋ฒ์ ์ ์์ฑํ๊ธฐ ์ํด switch_์ ๊ฐ _'case '๋ฉค๋ฒ๋ฅผ ๊ธฐ์ตํด์ผํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ์ค์์น ๋ถ๋ถ์ ์ฃผ์ ์ฒ๋ฆฌํ๊ณ ์ฌ๋ฐ๋ฅธ ๊ฐ์ฒด ๋ฒ์ ์ ๋ค์ ์
๋ ฅํ์ต๋๋ค.
ํ์ง๋ง ์ํ์ ํฉ๊ฒฉํ์ง ๋ชปํ์ต๋๋ค.
์ด๊ฒ์ ํ
์คํธ ํ์ธ ๋๋ฌธ์
๋๋ค
You should not use case, switch, or if statements
์ค์์น๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ๋ ๋์ _switch_ ์ฌ์ฉ์ ํ์ธํด์๋ ์๋๋ฉฐ์ด๋ฅผ ์ฃผ์์ผ๋ก ๊ฐ์ฃผํด์ผํฉ๋๋ค.
// Setup
function phoneticLookup(val) {
var result = "";
// Only change code below this line
var lookup = {
"alpha":"Adams",
"bravo":"Boston",
"charlie":"Chicago",
"delta":"Denver",
"echo":"Easy",
"foxtrot":"Frank"
};
result = lookup[val];
/*
switch(val) {
case "alpha":
result = "Adams";
break;
case "bravo":
result = "Boston";
break;
case "charlie":
result = "Chicago";
break;
case "delta":
result = "Denver";
break;
case "echo":
result = "Easy";
break;
case "foxtrot":
result = "Frank";
}
*/
// Only change code above this line
return result;
}
// Change this value to test
phoneticLookup("charlie");
@ Saif-Shines ์, ์ฐ๋ฆฌ๋ ์ด๊ฒ์ด ๋ฉ์ธ ์น ์ฌ์ดํธ์ ๊ธฐ์กด ๋ฌธ์ ๋ก ์๊ณ ์์ผ๋ฉฐ, ๊ฐ๋ฅํ๋ค๋ฉด ์๊ฒฉํ ํ์๋ฅผ ๊ฐ์ง ์์๋ ์ธํ๋ผ๊ฐ ๋ถ์กฑํฉ๋๋ค.
ํ์ฌ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๊ธ์ ์ญ์ ํ๋ ๊ฒ์ ๋๋ค.
์ ์ฌ์ ์ธ ๊ธฐ์ฌ์, ์ฌ๊ธฐ์์ ์กฐ์ฌํด์ผํฉ๋๋ค.
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16
/ cc @BerkeleyTrue
Basic Javascript์ ์ฒซ ๋ฒ์งธ ๋์ ์์ ๋๊ธ์ ์์ฑํ๋ ๋์ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
// Use comments only when they are actually needed
/* Sometimes, using descriptive names for variables and functions is way better
than leaving code smell all over your code */
์ด ๊ฒฝ์ฐ ๋ ๋ฒ์งธ ์ฃผ์์์ "ํจ์"๋ผ๋ ๋จ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
Error: SyntaxError: Unsafe or unfinished function declaration
์ด์ฉ๋ฉด์ ๋ํ ํ
์คํธ๋ฅผ ์คํ contents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,''))
๋์ contents
๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๊น? (์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ ๊ฒฝ์ฐ์๋ ์ฃผ์์ ๋์ฒด ํ ํ ๋ด์ฉ์ด ๋น์ด ์๊ธฐ ๋๋ฌธ์์ด ํน์ ํ
์คํธ๊ฐ ์ฌ์ ํ ์คํจํ๊ธฐ ๋๋ฌธ์
๋๋ค)
์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ํ ์ ์์ต๋๋ค.
Node node = nodeList.item(i);
if(node.getNodeType() == Node.COMMENT_NODE) {
continue;
} else {
//do something
}
๋๋ ์ด๊ฒ์ํ๊ณ ์ถ๋ค.
์ด ๋ฌธ์ ์ ๋ํด ๊ด์ฌ์ด ์์ต๋๋ค.์ด ์์ ์ ์ ์๊ฒ ํ ๋น ํ ์ ์์ผ๋ฉฐ ๋ณ๊ฒฝํด์ผํ๋ ํ์ผ๋ก ์ ๋ฅผ ์๋ด ํ ์ ์์ต๋๋ค.
1 ์ฃผ์ผ ๋๊ฒ ์ ๋ฐ์ดํธ๊ฐ ์์ผ๋ ์ ๊ฐ ๋งก๊ฒ ์ต๋๋ค. @ Survivor75 ์ @ knrt10์ด ๊ด์ฐฎ ๊ธธ ๋ฐ๋๋๋ค.
@raisedadead : ํด๊ฒฐ์ฑ ์ ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๊ฐ๋จํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฌธ์์ด ์ธ code
์์ ์ด์ค ์
์ ์คํํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด์ด ๋ฌธ์์ด์ ๋ํด ์ ๊ท์์ ์คํํ๊ณ ์ ํจ์ฑ ๊ฒ์ฌ์ ์ฌ์ฉ๋๊ธฐ ์ ์ ์ฃผ์์ ์ ๊ฑฐํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
์๋ฅผ ๋ค์ด- client/frame-runner.js
์์ ๋ค์๊ณผ ๊ฐ์ codemirror ํธ์ง๊ธฐ์ ๋ด์ฉ์ ๊ฐ์ ธ์ต๋๋ค.
const editor = { getValue() { return source; } };
const code = source;
์ฝ๋๋ฅผ ๊ทธ๋๋ก ์ ๋ฌํ๋ ๋์ ์ ๊ท์์ ์คํํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์์ ์ ๊ฑฐํฉ๋๋ค.
const editor = { getValue() { return source; } };
const code = source.replace(/\/\*[\s\S]*?\*\/|[^\S]\/\/.*$/gm, '');
์ด๋ ๊ฒํ๋ฉด ํ ์คํธ ๋ฌ๋๋ ์ฝ๋์์ ์ฃผ์์๋ฐ์ง ์์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด ์ ๊ท์์ ์ฌ๊ธฐ์์ ํ์ธํ์ต๋๋ค-http: //regexr.com/3ghvi
๋ ธํธ:
//
์ด์ด์ง๋ ๋ฌธ์๋ฅผ ๋์ฒดํ๊ธฐ ๋๋ฌธ์ ์์ฒด ์ค์ ์กด์ฌํ์ง ์๋ ์ธ๋ผ์ธ ์ฃผ์์ ๋์ฒดํ์ง ์์ต๋๋ค.@adityaparab ๊ทธ ๋ฉ์ง : +1 :.
๋ค๋ฅธ ์ผ์ ์ฐธ์ฌํ๋ฉด์ ๊ฑฐ์ ์์ด ๋ฒ๋ ธ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๋์ด ์ฝ๋๋ฅผ ์๊ฐํด ๋์ต๋๋ค.์ด ์์
์ ์ํํ๋ ค๋ฉด ์๋ ๊ธฐ๋ฅ์ ์ดํด๋ณด์ญ์์ค.
function stripComments ( code ) {
return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ;
}
์ฃผ์ ์ฒ๋ฆฌ ๋ ์ฝ๋๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. :)
๋ถํํ๋ ์ฌ๊ธฐ์ ์ ์ผํ ํด๊ฒฐ์ฑ ์ ํ ์คํธ์ AST๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. @QuincyLarson ๊ณผ ํจ๊ป babel์ด ์์ฑ ํ JS AST๋ฅผ ๋ ธ์ถํ๋ API๋ฅผ ์ถ๊ฐํ๊ณ eslint์ ํ๋ฌ๊ทธ์ธ ์ธํฐํ์ด์ค์ ์ ์ฌํ API๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ ผ์ํ์ต๋๋ค. ์ฐ์ ์์๊ฐ ๋ฐ์ ๊ณผ์ ๋ก ์ด๋ ํ ๋ค์ ๊ณผ์ ์์ฒด๋ฅผ ํ์ผ์์ ๊ฐ์ ธ ์ค๋ ๋ฐฉ์์ ์ผ๋ฐํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ฝ๊ฐ ๋ฒ์ด๋ ์ ์์ต๋๋ค.
๋ฐฉ๊ธ "๊ธฐ๋ฅ"์ด๋ผ๋ ๋จ์ด๊ฐ ํฌํจ ๋ ๋๊ธ๋ก์ด ๋ฌธ์ ์ ๋ถ๋ช ํ์ต๋๋ค. ํฌ๋ผ ์ค ๋๊ตฐ๊ฐ๊ฐ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ค๋ช ํ ๋๊น์ง ์ ๋ง ํผ๋ ์ค๋ฌ์ ์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ ๊ณง ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ฑ๋ฆฐ์ง์ ์ฃผ์๊ณผ ๊ด๋ จ๋ ํ์ ๋ฌธ์ ์ ๋ํด ๊ฒฝ๊ณ ํ๋ ๋ฉ์์ง๊ฐ ์ฌ์ฉ์์๊ฒ ํ์๋์ด์ผํฉ๋๊น?
๋ํ๋ณด์ญ์์ค:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249
@SuperGeniusZeb ์ด๊ฒ์๋ณด๊ณ ํ๊ณ ๊ทธ๊ฒ์ ์ฌํํ๋ ๋จ๊ณ๋ฅผ ํ์ธ
์ด ๋ฌธ์ ๋ ์ต๊ทผ์ ํ์ฑํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ค๋๋ ๋ฌธ์ ๋ก ๋ง๊ฐํ๊ฒ ์ต๋๋ค. ์ด๊ฒ์ด ์๋ก ์ ๋ฐ์ดํธ ๋ ํ๋ซํผ๊ณผ ์ฌ์ ํ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐ๋๋ฉด ์ด์ ๋ฅผ ์ค๋ช ํ๊ณ ๋ค์์ฌ์ญ์์ค.
์๋ ํ์ธ์.
์ ๋ฐ์ดํธ ๋ ์ฌ์ดํธ์์ ๋๊ธ์ ์ฌ์ ํ โโ์ฑ๋ฆฐ์ง ํ ์คํธ์์ ์ฝ๋๋ก ์๋ชป ์ฝํ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋์ ์ ์๊ฐํด๋ณด์ญ์์ค.
๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฃผ์์ grid-column-gap: 20px
์ด ์๋๋ผ๋ ํ
์คํธ ( grid-column-gap
๊ฐ 20px
๋ก ์ค์ ๋์๋์ง ํ์ธ)๋ฅผ ํต๊ณผ ํ ์ ์์ต๋๋ค.
<style>
.d1{background:LightSkyBlue;}
.d2{background:LightSalmon;}
.d3{background:PaleTurquoise;}
.d4{background:LightPink;}
.d5{background:PaleGreen;}
.container {
font-size: 40px;
min-height: 300px;
width: 100%;
background: LightGray;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
/* add your code below this line */
grid-column-gap: 10px;
// grid-column-gap: 20px;
/* add your code above this line */
}
</style>
<div class="container">
<div class="d1">1</div>
<div class="d2">2</div>
<div class="d3">3</div>
<div class="d4">4</div>
<div class="d5">5</div>
</div>
์ด ๋ฌธ์ ๋ฅผ ๋ค์์ฌ์ญ์์ค.
@SuperGeniusZeb https://github.com/freeCodeCamp/learn/issues ์์ ์ ๋ฌธ์ ๋ฅผ ์ด โโ์ ์์ต๋๊น? ๊ฐ์ฌํฉ๋๋ค.
@raisedadead ๋ฐฉ๊ธ ๊ฑฐ๊ธฐ์ ์๋ก์ด ๋ฌธ์ ๋ฅผ ๋ง๋ค์์ต๋๋ค.
https://github.com/freeCodeCamp/learn/issues/165
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@ Saif-Shines ์, ์ฐ๋ฆฌ๋ ์ด๊ฒ์ด ๋ฉ์ธ ์น ์ฌ์ดํธ์ ๊ธฐ์กด ๋ฌธ์ ๋ก ์๊ณ ์์ผ๋ฉฐ, ๊ฐ๋ฅํ๋ค๋ฉด ์๊ฒฉํ ํ์๋ฅผ ๊ฐ์ง ์์๋ ์ธํ๋ผ๊ฐ ๋ถ์กฑํฉ๋๋ค.
ํ์ฌ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๊ธ์ ์ญ์ ํ๋ ๊ฒ์ ๋๋ค.