script
script 태그엔 자바스크립트 코드가 들어간다.
브라우저는 이 태그를 만나면 안의 코드를 자동을 처리한다.
외부 스크립트
자바스크립트 코드의 양이 많을댄, 소분하여 저장할 수 있음
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
스크립트가 길어지면 별개의 분리된 파일을 만들어 저장하는 것이 좋다. --> 브라우저가 스크립트를 다운받아 캐시(cache)에 저장하기 때문. --> 새로 다운받지 않고 캐시에서 가져와 사용함. 트래픽 절약 및 웹 페이지 속도 상승!!!
- src 속성이 있으면 태그 내부의 코드는 무시된다. 따로 사용하고 싶다면 스크립트 두 개로 분리시켜야 정상적으로 실행된다.
변수(variable)
let 과 var
만들어진지 오래 된 스크립트에서는 let 대신 var라는 키워드를 통해서 변수를 설정한다.
- var 은 let 과 거의 동일하게 동작하지만 '오래된' 방식이다. (그 차이가 중요하진 않음)
변수 명명 규칙
- 변수명에는 오직 숫자와 문자 그리고 $, _ 기호만 들어갈 수 있다.
- 첫 글자는 숫자가 될 수 없다.
- 무엇을 하고 있는지 명확히 알고 있지 않는 경우 외에는 줄임말이나 a, b, c와 같은 짧은 이름은 피하도록 한다.
- 최대한 서술적이지만 간결하게 명명한다.
문자형
- 큰따옴표: "Hello"
- 작은따옴표: 'Hello'
- 역 따옴표(백틱, backtick):
Hello
alert( `the result is ${1 + 2}` ); // the result is 3
${…} 안에는 name 같은 변수나 1 + 2 같은 수학 관련 표현식을 넣을 수 있다. 무엇이든 들어갈 수 있다. 이렇게 문자열 중간에 들어간 변수나 표현식은 평가가 끝난 후 문자열의 일부가 됩니다.
null
null 값은 지금까지 소개한 자료형 중 어느 자료형에도 속하지 않는 값
null 값은 오로지 null 값만 포함하는 별도의 자료형
‘undefined’ 값
undefined 값도 null 값처럼 자신만의 자료형을 형성
값이 할당되지 않은 상태를 나타낸다.
객체와 심볼
객체형 : 복잡한 개체를 표현할 수 있고, 데이터 컬렉션도 나타낼 수 있다.
심볼형 : 객체의 고유한 식별자를 만들 때 사용된다.
prompt
prompt 함수는 두 개의 인수를 받는다.
result = prompt(title, [default]);
함수가 실행되면 텍스트 메세지와 입력 필드, 확인 및 취소 버튼이 있는 창으로 띄워준다.
let age = prompt('나이를 입력해주세요.', 100);
alert(`당신의 나이는 ${age}살 입니다.`); // 당신의 나이는 100살입니다.
컨펌 대화상자
result = confirm(question);
confirm 함수는 매개변수로 받은 질문과 확인 및 취소 버튼이 있는 창을 보여준다.
let isBoss = confirm("당신이 주인인가요?");
alert( isBoss ); // 확인 버튼을 눌렀다면 true가 출력됩니다.
이항 연산자 '+' 와 문자열 연결
덧셈 연산자 + : 숫자를 더한 결과를 반영
이항 연산자 + : 피연산자로 문자열이 전달되면 덧셈 연산자는 덧셈이 아닌 문자열을 병합시켜버린다!
피 연산자 중 하나가 문자열이면 다른 것들도 문자열로 변환~
alert(2 + 2 + '1' ); // '221'이 아니라 '41'이 출력됩니다.
let apples = "2";
let oranges = "3";
alert( apples + oranges ); // 23, 이항 덧셈 연산자는 문자열을 연결합니다.
let apples = "2";
let oranges = "3";
// 이항 덧셈 연산자가 적용되기 전에, 두 피연산자는 숫자형으로 변화합니다.
alert( +apples + +oranges ); // 5
// `Number(...)`를 사용해서 같은 동작을 하는 코드를 작성할 수 있지만, 더 기네요.
// alert( Number(apples) + Number(oranges) ); // 5
비교연산자
다른 형을 가진 값 간의 비교
비교하려는 값의 자료형이 다르면 자바스크립트는 이 값들을 숫자형으로 바꿉니다.
alert( '2' > 1 ); // true, 문자열 '2'가 숫자 2로 변환된 후 비교가 진행됩니다.
alert( '01' == 1 ); // true, 문자열 '01'이 숫자 1로 변환된 후 비교가 진행됩니다.
== : 덜 빡센 비교 연산자
=== : 훨씬 빡센 비교 연산자
alert( null == undefined ); // true
alert( null === undefined ); // false
- 숫자 0, 빈 문자열"", null, undefined, NaN은 불린형으로 변환 시 모두 false가 됩니다. 이런 값들은 ‘falsy(거짓 같은)’ 값이라고 부릅니다.
- 이 외의 값은 불린형으로 변환시 true가 되므로 ‘truthy(참 같은)’ 값이라고 부릅니다.
조건부 연산자 ?
조건에 따라 다른 값을 변수에 할당해줘야 할 때가 있다.
- 물음표 연산자라고 불리는 조건부 연산자를 사용하면 긴 코드를 간결하게 변형시킬 수 있다.
조건부 연산자는 물음표? 로 표시!
피연산자가 세 개이기 때문에 조건부 연산자를 '삼항(ternary) 연산자’라고도 부른다.
참고로, 자바스크립트에서 피연산자가 3개나 받는 연산자는 조건부 연산자가 유일!
let accessAllowed;
let age = prompt('나이를 입력해 주세요.', '');
if (age > 18) {
accessAllowed = true;
} else {
accessAllowed = false;
}
alert(accessAllowed);
위 코드는 아래 코드로 정리할 수 있다.
let accessAllowed = (age > 18) ? true : false;
비교 연산자 자체가 true나 false를 반환하기 때문에 위 예시에서 물음표 연산자를 사용하지 않아도 됩니다.
물음표 연산자 ? 를 여러개 연결하면 복수의 조건을 처리할 수 있다.
let age = prompt('나이를 입력해주세요.', 18);
let message = (age < 3) ? '아기야 안녕?' :
(age < 18) ? '안녕!' :
(age < 100) ? '환영합니다!' :
'나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';
alert( message );
이 코드를 if else 구문을 이용하면 똑같이 다음과 같이 바뀐당!
if (age < 3) {
message = '아기야 안녕?';
} else if (age < 18) {
message = '안녕!';
} else if (age < 100) {
message = '환영합니다!';
} else {
message = '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';
}
null 병합 연산자
?? : null 병합 연산자 (여러 피연산자 중 그 값이 확정되어 있는 변수를 찾는 것)
?? 와 || 의 차이
1. || 는 첫번째 truty한 값을 반환한다.
2. ?? 는 첫번째 정의된(define) 값을 반환한다.
안정성 관련 이슈 때문에 ??는 &&나 ||와 함께 사용하지 못한다.
반복문
do ... while 반복문
do ... while 반복문을 사용하면 조건을 반복문 본문 아래로 옮길 수 있다.
(일단 한번은 실행을 하게 됨)
반복문 빠져 나오기
break
지시자의 break를 사용하면 원하는 때에 반복문을 탈출할 수 있다.
continue
break이랑 비슷하지만 continue는 전체 반복문을 나오진 않는다. 다만 현재 진행중인 과정만 멈추고 다음 반복문을 실행한다.
- 현재 반복을 종료시키고 다음 반복문으로 넘어가고 싶을 때 사용한다.
여러 개의 중첩 반복문을 한 번에 빠져나와야하는 경우 : 레이블을 활용한다!
- 레이블 : 반복문 앞에 :과 함께 쓰이는 식별자로 이름처럼 생각하면 된다.
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`(${i},${j})의 값`, '');
// 사용자가 아무것도 입력하지 않거나 Cancel 버튼을 누르면 두 반복문 모두를 빠져나옵니다.
if (!input) break outer; // (*)
// 입력받은 값을 가지고 무언가를 함
}
}
alert('완료!');
함수
유사하게 동작하는 코드를 여러 곳에서 필요해서 사용할 때 활용.
- alert, promt, confirm 등 내장함수
지역변수
함수 내에서 선언한 변수로 지역 변수는 함수 안에서만 접근이 가능.
외부변수
함수 내부에서 함수 외부의 변수인 외부 변수에 접근 가능.
- 단순히 외부 변수에 접근하는 것뿐만이 아니라 수정도 가능.
매개변수(parameter)
임의의 데이터를 함수 안에 전달할 수 있음.
인수라고도 불림 (argument)
함수는 함수 이름에 언급되어있는 동작을 정확히 수행해야 한다.
그 이외의 동작은 수행해선 안된다.
함수가 길어졌다 ? --> 함수를 쪼갤때가 왔다.
자바스크립트에서는 함수 명 옆에 괄호가 있어야지만 함수가 호출된다.
또한 함수를 값처럼 취급하기 때문에 함수의 소스코드가 문자형으로 바뀌어 출력된다.
함수 표현식 vs 함수 선언문
// 함수 표현식
let sum = function(a, b) {
return a + b;
};
함수는 표현식이나 구문 구성 내부에 생성된다.
// 함수 선언문
function sum(a, b) {
return a + b;
}
함수는 주요 코드 흐름 중간에 독자적인 구문형태로 존재.
- 함수 표현식은 실제 실행 흐름이 해당 함수에 도달했을 때 함수를 생성
- 함수 선언문은 함수 선언문이 정의되기 전에도 호출될 수 있다.
또한, 엄격 모드에서 함수 선언문이 코드 블록 내에 위치하면 어디에서든 접근 가능하지만 블록 밖에서는 함수에 접근하지 못한다. - 함수 선언문을 사용하면 가독성도 좋고, 함수 선언 이전에 호출이 가능하기 때문에 더 자유롭다!
'Javascript' 카테고리의 다른 글
javascript reduce 배열 메서드 (0) | 2021.03.24 |
---|---|
javascript 정리 (0) | 2021.03.24 |
javascript 변수와 상수 (var vs const) (0) | 2021.03.24 |
Data Structure(자료구조) 란? (0) | 2021.03.23 |
iframe 정보를 부모 페이지로 전송하는 방법 postMessage (0) | 2021.03.23 |
개의 댓글