프로그래밍적으로 사고하지 못한다면 아무리 문법을 외워도 실제 프로그램을 만들 수 없다.
코드를 입력하기 전에 내가 만들 프로그램이 어떤 절차로 돌아갈지 미리 생각하자. (순서도 그리기 → 코드 작성)
※ 프로그램 절차는 상황에 따라 절차 갯수가 늘어났다 줄어드는 변동이 있으면 안된다. 프로그램은 고정된 절차로 돌아가야하므로 절차의 수가 같게 동작하는 프로그램을 만들어야 한다.
<프로그램 절차를 만들 때의 원칙>
<끝말잇기 절차>
상호보완적으로 순서도를 토대로 코드를 작성하고, 작성된 코드와 순서도를 비교하며 순서도를 보완한다. 코드를 검증하면서 부족하거나 모호한 점을 수정하는 작업을 거친다.
※ 순서도를 만들 때 사용자의 이벤트(버튼 클릭, 입력창 글자 입력 등)가 필요한 곳에서 순서도를 끊어줘야 한다!
➕ 단축키
Shift + Alt + ⇅ : 해당 줄 코드 복사
Shift + Alt + F : 코드 띄어쓰기 정리
(실무에서 잘 사용하지 않음)
<script>
// 값을 저장하기 위해 변수를 생성해 값을 할당
// 두번째 인자는 십진법(default)으로 숫자형변환
const number = parseInt(prompt('참가 인원은?'), 10);
alert(number);
const yesOrNo = confirm('맞습니까?');
</script>
브라우저가 사용자로부터 입력한 값을 전달받음
prompt 대화 상자에 사용자가 입력한 메세지가 문자열 형태로 전달되고, 입력하지 않고 취소를 누르면 null이 전달
숫자를 입력한 경우 문자열 형태이므로 'parseInt 또는 Number'를 이용해 숫자형으로 변환
사용자에게 알림창을 띄어 경고 메시지를 표시
호출 시 확인 버튼을 누르기 전까지 다음 스크립트 실행 중단
브라우저가 사용자로부터 '예/아니오' 대답을 받아 사용자의 확인을 요구함
확인 버튼을 누르면 true가 전달되고 취소 버튼을 누르면 false가 전달됨
// 실제 배열
[1, 2, 3]
▶(3) [1, 2, 3]
// 유사 배열 객체
document.querySelectorAll('input')
▶ NodeList [input]
'▶ NodeList [input]'은 배열은 아니지만 배열의 형태를 띄는 객체로 유사 배열 객체(Array-like Object) 라고 한다. 배열의 속성이나 메서드를 사용할 수 없는 경우가 있다.
유사 배열 객체는 0 이상의 정수값을 프로퍼티 이름으로 갖고, length 프로퍼티가 있는 객체이다.
(예. let abc = { 0:“A”, 1:“B”, 2:“C”, length:3 };)
document.querySelector('#아이디'); // 유일한 태그 한개 선택
document.querySelectorAll('.클래스'); // 동일한 태그 여러개 선택
document.querySelector('div span'); // div 태그의 자손인 span 태그 선택
document.querySelector('div>span'); // div 태그의 직계자식인 span 태그 선택
태그.addEventListener('이벤트 이름', 리스너 함수);
해당 이벤트가 일어남에 따라 리스너 함수가 호출되어 실행된다.
※ (첫번째 인수는 문자열이고,) 두번째 인수가 함수 자리로 함수 자체를 넣어야 한다. 리스너 함수에 '()'를 붙이면 이벤트 상관 없이 함수가 실행되므로 '()'를 붙여 함수를 실행해서는 안된다!
<script>
// 한번만 사용하는 경우 익명 함수, 변수 할당하는 방법 사용 가능
document.querySelector('input').addEventListener('input', function() {
console.log('글자 입력');
});
// 화살표 함수로 나타내기
document.querySelector('input').addEventListener('input', () => {
console.log('글자 입력');
});
/* -------------------------------------------- */
// 여러번 재사용될 때 콜백 함수를 변수로 저장
const onClick = function() {
console.log('버튼 클릭');
// return undefined;
}
document.querySelector('button').addEventListener('click', onClick);
// 화살표 함수로 나타내기
const onClick = () => {
console.log('버튼 클릭');
};
</script>
🔽 사용자가 입력한 값 확인하기
document.querySelector('input').addEventListener('input', (event) => {
console.log('글자 입력', event.target.value);
});
➕ 화살표 함수와 function으로 만든 함수는 동작 방식이 다르다! (this 파트에서 배움)