무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
-2+ -2 = -4 음수 더하기 음수 - 셀프체크 계산기
음수 끼리 더해 보고 싶어서 해봤습니다.근데 결과가 0이 나와서 질문 드립니다.혹시 숫자가 잘못 나왔나 해서 콘솔 로 확인 해봤는데 숫자는 우선 잘 된것 같습니다. 무엇이 문제인걸까요? -3 + -5 도 결과 값이 2 가 나옵니다.계산할때 중괄호가 없어서 그런걸까요?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
별찍기 마름모 문제입니다.
안녕하세요! 마름모 별찍기 문제입니다 ! 우선 위에 마름모는 출력을 하였는데 밑으로 다시 내려오는 마름모가 안되어서 질문 드립니다. for(let j =0; j<6 ;j++){ if(j % 2 ===0) continue for(let i =0; i<3; i++){ for(i+ j+i ===5) console.log(' '.repeat(i)+ '*'.repeat(j)+' '.repeat(3-i)); }}이 for문 에서 종료식을 바꿔야될것 같은데 지금은 종료식이 1씩 더해지는 것인데 혹시 종료식이 1씩 빼지는 것도 동시에 할수 있는 것 이 있을까요?아니면 그림에 나온것 처럼 따로 k를 만들어서 해야되는 걸까요?아니면 콘솔로 나온 결과는 반대로 해서 한번더 다시 나올수 있도록 해야되나? 라는 생각도 해보았습니다.
- 해결됨[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
숙제 질문
강의 커리큘럼에 있는 셀프 체크는 정답 예시를 찾았는데 강의 중간중간에 내주시는 if문 중첩 줄이기, 계산기 처음 입력시 음수 입력가능하게 하기 등의 숙제는 정답 예시는 따로 없는건가요? 그냥 유튜브나 인프런에 관련 질문 올리면 확인해주시는건가요?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
5강 async/await으로 가독성 높이기에서
async/await 그리고 promise 에 대한 부분이 윗부분 강의에서 나오지 않았는데 어디를 먼저 듣고 와야하는 걸까요 ?아니면 이 부분은 제가 따로 책으로 공부하고 들어야하는 건가요 ?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
야구게임 관련 질문입니다
야구게임에서 숫자말고 다른걸 입력했을 때 경고가 뜨게 하고 싶어서형식 확인하는 함수에서 마지막에 코드를 추가해봤는데 숫자를 입력했을 때도 경고가 뜨더라구요이래저래 해보는데 안돼서 방법이 잘못된건가 싶어서 여쭤봅니다! 혹시 애초에 input type이 text여서 그런걸까요..?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
쿵쿵따, 계산기에서 변수 선언
안녕하세요 변수 선언 관련해 질문이 있습니다 쿵쿵따에서는 단어 저장할 변수를 만들 때 아래와 같이 변수자체만 선언하고계산기 만들기를 할 때는 숫자랑 연산자 저장할 변수를 만들 때 아래처럼 빈 문자열을 넣는데 어떤 이유가 있는 건지 궁금합니다계산기 만들기에서 아래처럼 선언하면 숫자가 저장되지 않고 NaN이 나오더라구요
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
지뢰 힌트 사라짐(대괄호)
function openAround(rI, cI) { // 주변 공간 확인 setTimeout(() => { // stack overflow 방지 (콜백큐에 저장) const count = open(rI, cI); if (count === 0) { openAround([rI - 1], [cI - 1]); // 대괄호 적용 시 아래 사진처럼 됨 openAround(rI - 1, cI); openAround(rI - 1, cI + 1); openAround(rI, cI - 1); openAround(rI, cI + 1); openAround(rI + 1, cI - 1); openAround(rI + 1, cI); openAround(rI + 1, cI + 1); } }, 0) }위 코드로 실행시키면 지뢰 좌측만 힌트 숫자가 사라집니다.대괄호로 인수가 배열로 되었을 때 함수가 어떻게 작동되는지 궁금합니다.
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
콜백 큐와 테스크 큐
테스크 큐와 콜백 큐는 같은 의미인 가요?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
강의보는순서질문
강의가많은데 보는 순서좀 알려주세요. 풀스택.
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
target.cellIndex 확인하는 방법이 있을까요?
const row = target.parentNode.row; const cell = target.cell;const row = target.parentNode.rowIndex; const cell = target.cellIndex;계속 변수명 바꾸면서 왜 안 되나 싶었는데 idex가 메서드였군요.. 혹시 위 사진처럼 cellIndex를 확인 할 수 있는 방법이 있을까요?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
스코프 질문
안녕하세요. 스코프 부분을 좀 더 공부하다가 헷갈려서 질문드립니다. 강의에서 예시로 들어주신 for(var i=0; i<winBalls.length;i++){ console.log("for문 돌아가는 중",i); setTimeout(()=>{ console.log(winBalls[i],i); drawBall(winBalls[i],$result) },(i+1)*1000); }이 코드에서는 for문이 먼저 돌아가서 i의 값이 6이 된 이후 setTimeout이 각각 1초, 2초, 3초, 4초, 5초 후 실행되기 때문에 이미 for문이 돌아가고 i값이 6이되어 console.log(winBalls[i],i); 의 결과로 출력되는 값이 강의와 같이 전부 undefined와 6이 되는 것으로 이해했습니다. 제가 아직 뒷강의를 듣지 못했지만 이번 강의 내용을 듣고 스코프 부분을 더 찾아보면서 함수는 렉시컬스코프가 적용된다는 것을 알게되었습니다. 그래서 아래 코드를 테스트 해보았는데요.var arr=[]; for(var i=0; i<5; i++){ arr[i] = function(){ console.log("function 내부", i); return i; } } for(var func of arr){ console.log(func()); }결과로function 내부 55가 다섯번 출력되었습니다. 저는 for문이 돌아가는 과정이1) i=0일 때,for 문 내부에서 전역변수인 i=0이고, arr[0]=function() {..}으로 함수의 표현식이 나오는데, 렉시컬 스코프에 의해 함수 내부에서는 현재 전역변수 i에 할당되어있는 값인 0을 참조.2) i=1일 때,for 문 내부에서 전역변수인 i=1이고, arr[1]=function() {..}으로 함수의 표현식이 나오는데, 렉시컬 스코프에 의해 함수 내부에서는 현재 전역변수 i에 할당되어있는 값인 1을 참조. 이후, 각각 i=2,3,4일 때도 마찬가지일거라고 생각했습니다. 그런데, 생각과 다르게 출력되어서 제가 렉시컬 스코프와 블록스코프를 잘못 이해하고 있는 것인지 궁금합니다. 감사합니다!
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
중복 검사 (메소드 활용)
for문으로 구현하고나서 문득 메소드로 중복검사를 구현할 수 있을 거 같은 느낌이 들었습니다.전체 숫자에서 하나의 값을 저장하고 모든 숫자를 한번씩 검색 하면은 find(map()) 또는 map(find()) 방법으로 구현 할 수 있을까요?아님 find 하나만으로도 구현 할 수 있을까요?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
빼기 마이너스 / 연속계산 질문있습니다.
let num1; let num2; let op; let cal; let minus = 1; function onClickNumber(e) { if(!op) { $result.value += e.target.textContent * minus; num1 = parseInt($result.value); minus = 1; } else { $result.value += e.target.textContent * minus; num2 = parseInt($result.value); minsu = 1; } } function operator(e) { if (num2) { switch(op) { case '+' : $result.value = num1 + num2; break; case '-' : $result.value = num1 - num2; break; case 'x' : $result.value = num1 * num2; break; case '/' : $result.value = num1 / num2; break; } num1 = $result.value; num2 = ''; minus = 1; } if (num1 && !op) { $operator.value = e.target.textContent; op = $operator.value; $result.value = ''; } if (!num1 && e.target.textContent === '-') { return minus = -1; } if (op && !num2 && e.target.textContent === '-') { return minus = -1; } }마이너스 구현은 됐는데 빼기 할 때, 마이너스가 같이 나와요. 조건을 추가해서 더 넣어봤는데 그러면 다른 기능이 작동하질 않네요...연속계산은 잘 되다가 마이너스 구현 이후로 작동이 안 되네요.이 강좌 이후에 해설 있나요?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
선생님 블로그 이미지들이 모두 undefined로 나옵니다 ㅠㅠ
학습을 하는 과정에서 제로초님 블로그를 자주 참고하는데학습에 도움되는 이미지들이 모두 undefined로 나오지 않습니다. 혹시 언제 해결 될까요?
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
계산하기 함수의 고차함수 응용
const calculate = (op) => ()=> { if(numTwo){ let num1 = Number(numOne); let num2 = Number(numTwo); switch (op) { case ('+'): $result.value = num1+num2; break; case ('-'): $result.value = num1-num2; break; case ('/'): $result.value = num1/num2; break; case ('*'): $result.value = num1*num2; break; } $operator.value = '' } else{ alert('두번째 숫자를 입력해주세요!') } } document.querySelector('#calculate').addEventListener('click', calculate(operator))고차 함수 개념을 한번 적용해 보고자 calculate함수를 고차함수를 이용해서 한번 작성해 보았습니다. 하지만 op라는 매개변수를 calculate함수 안에서 console.log 해보았을때 제대로 불러지지 않는데 이유가 무엇인지 궁금합니다. operator와 numOne numTwo를 모두 누른 상태를 가정하고 싶습니다.
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
html 어디서 가져오나요?
안녕하세요 제로초님 강의를 보면서 느낀게 html 코드들을 어디서 가져오는지 모르겠어서 여쭤봅니다. 2년전 답글에 링크가 있어서 링크 클릭해봤는데 없다고 뜨는데 현재는 html 코드를 못가져오고 하드코딩해야할까요?
- 해결됨[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
틱택토 코드에서 ESLint Warning
안녕하세요 제로초님틱택토 2강 중에 클릭 이벤트 부분 진행 중 질문 드립니다저는 https://playcode.io/ 라는 온라인 에디터에서 공부 중인데요 여기 환경에서 ESLint Warning 이 떠서 문의드립니다.const elemTable = document.createElement('table'); let turn = 'O'; for (let i = 0; i < 3; i++) { const elemTr = document.createElement('tr'); for (let i = 0; i < 3; i++) { const elemTd = document.createElement('td'); elemTd.addEventListener('click', (e) => { // ESLint Warning if (e.currentTarget.textContent) return; // ESLint Warning e.currentTarget.textContent = turn; // ESLint Warning turn === 'O' ? turn = 'X' : turn = 'O'; // ESLint Warning }) // ESLint Warning elemTr.insertAdjacentElement('beforeend', elemTd); } elemTable.insertAdjacentElement('beforeend', elemTr); } document.body.insertAdjacentElement('afterbegin', elemTable);'Function declared in a loop contains unsafe references to variable' -> 루프에서 선언된 함수에 변수에 대한 안전하지 않은 참조가 포함된다.라는 내용이라고 하는데 위 내용을 구글링 해보면 반복분 for에서 var 대신 let은 쓰면 해결된다는 내용뿐이라(이미 let 사용중) 어떤 부분이 원인인지 잘 모르겠어서요. 코드는 잘 실행됩니다저는 삼항연산자를 썼지만 강의 내용대로 if문을 써도 동일한 ESLint Warning이 나오고 있습니다.배포된 페이지도 공유드립니다.https://1710512.playcode.io/
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
setTimeout 함수 관련해 질문이 있습니다.
const showBall = (number, $target) => { const $ball = document.createElement('div'); $ball.className = 'ball'; $ball.textContent = number; $target.appendChild($ball); }; for (let i = 0; i < 6; i++) { setTimeout(() => { showBall(winBalls[i], $result); }, 1000 * (i + 1)); } setTimeout(() => { showBall(bonus, $bonus); }, 7000);
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
로또 랜덤게임을 만들었는데 피드백 부탁드립니다 ㅠㅠ
1. 사용자에게 로또번호 받기(form태그로 구현) 2. checkInput을 통해 입력값 통제 1. 2 자릿수까지만 입력 2. 숫자만 입력 3. 이미 입력한 숫자는 재사용 불가 4. 빈 값 입력 불가 3. 사용자 입력이 끝나면 classList를 통해 form 부분을 사라지게 만들었습니다. 4. 사용자 입력번호와 랜덤으로 추출한 번호가 일치하는지 구현 1. winningLottoNumber(보너스 번호를 제외하고 일치하는 번호가 있는지) 변수를 통해 카운트 2. winningLottoBonusNumber(보너스 번호) 변수를 통해 카운트 => 여기서 includes를 써도 카운트가 안됐습니다. 찾아본 결과 includes는 형까지 똑같아야 true로 나와서 형 변환 후 검증했습니다. 5. 랜덤 로또 번호가 다 나온 후 결과가 나오게 setTimout을 9초로 설정했습니다!혹시나 이상한 부분이나 고쳐야 할 부분이 있는지 문의 드립니다 ㅠㅠ 코드가 길어서 깃허브 주소 첨부 했습니다~!감사합니다.https://github.com/diderot7/JS-PRACTICE/blob/main/lotto.html
- 미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
쿵쿵따 추가적인 조건을 붙여서 만들었는데 어떤지 평가 부탁드립니다 ㅠㅠ
제가 추가적으로 구현한건 아래와 같습니다.끝말잇기 단어를 잘못 선택하면 탈락기존에 썼던 단어를 또 사용하면 탈락참가자가 한 명 남으면 게임이 끝남=> 참가자는 number를 배열로 만들어서 틀리면 배열의 숫자를 제거하는걸로 구현했습니다. const number = Number(prompt("몇 명이 참가하나요?")); if (number) { const $order = document.querySelector("#order"); const $word = document.querySelector("#word"); const $input = document.querySelector("input"); const $button = document.querySelector("button"); const numArray = Array(number) .fill() .map((v, i) => i + 1); let word; let newWord; const compareArray = []; let order = Number($order.textContent) - 1; const onClickButton = () => { if ( (!word || word[word.length - 1] === newWord[0]) && newWord.length === 3 ) { if (compareArray.includes(newWord) === false) { word = newWord; $word.textContent = word; compareArray.push(word); console.log(compareArray, numArray); if (numArray[order] + 1 > numArray.length) { $order.textContent = numArray[0]; order = 0; } else { $order.textContent = numArray[order + 1]; order += 1; } } else { alert("이미 있는 단어입니다. 탈락입니다."); numArray.splice(numArray.indexOf(numArray[order]), 1); $order.textContent = numArray[order]; console.log(numArray, order); } } else if (newWord.length !== 3) { alert("작성해야 할 단어는 총 3글자입니다."); } else { alert( `잘못된 단어입니다. ${numArray[order]}번 참가자는 탈락입니다.` ); numArray.splice(numArray.indexOf(numArray[order]), 1); $order.textContent = numArray[order]; console.log(numArray, order); } if (numArray.length === 1) { alert( `게임이 종료되었습니다 승리자는${numArray[0]}번 참가자입니다` ); } $input.value = ""; $input.focus(); console.log(newWord); }; const onInput = (event) => { newWord = event.target.value; }; $button.addEventListener("click", onClickButton); $input.addEventListener("input", onInput); }