<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>글자색 바꾸기</title>
<link rel="stylesheet" href="css/change-color.css" />
</head>
<body>
<h1 id="heading">자바스크립트</h1>
<p id="text">위 텍스트를 클릭해 보세요</p>
<script src="./js/change.js"></script>
</body>
📌 HTML 태그의 이벤트 리스너 속성에 작성
📌 <script> </script>
태그에 작성
📌 자바스크립트 파일에 작성
📌 URL 부분에 작성
<body>
<h1>어서오세요</h1>
<script>
// prompt: 외부에서 입력한 값을 가져올 수 있음
var name = prompt('이름을 입력하세요!');
document.write('<b><big>' + name + '</big></b>님, 안녕하세요!');
</script>
</body>
<body>
<script>
var now = new Date();
var display = now.toLocaleTimeString();
document.write('현재 시각은 ' + display);
</script>
</body>
✔️ toLocaleTimeString(): 생성된 Date 객체에서 시간 부분을 현재 지역 표기법으로 변환하여 가져온다
➡️ locales(로케일 - 언어와 국가)과 options(옵션)을 파라미터(Parameter) 전달받아 현재 지역 표기법으로 변환한다
📌 f12: 콘솔창을 통해 간단하게 코드를 구현하거나 오류를 찾을 수 있다
1. 대소문자 구분
sum, Sum, SUM => 모두 다르게 인식
2. 읽기 쉽게 들여쓰기 하는 습관
3. 세미콜론(;)으로 문장 구분
4. 주석
한 줄 주석 ➡️ (단축키: crtl + /)
// 주석 내용
여러줄 주석 ➡️ (단축키: alt + shift + a)
/* 여러 줄을 주석 처리 */
5. 식별자 (변수, 함수, 속성 등)을 구별하기 위해 이름을 붙여주는 특정 단어
number, string, boolean, array, object, null, undefined
["집", "가고", "싶다"]
{name: '수갱', age: 28}
array: 인덱스로 배열의 값을 불러온다! 0부터 시작!
var season = ["봄", "여름", "가을", "겨울"];
object: 함수와 속성이 함께 포함된 유형var kim = { firstName : "John", lastname : "Smith", age : 35, address : "Seoul" };
➡️ 변수에 값이나 식을 저장한다.
➡️ 변수를 선언하면서 저장할 수도 있고, 선언한 다음에 저장할 수도 있다.
변수 선언 규칙 3가지
✔️ 이름은 의미 있게
✔️ 카멜 케이스 camelCase 사용
혹은 스네이크_케이스 snake_case 를 사용하기도 함
✔️ 선언할 수 없는 이름 있음
변수명 작성 규칙
1. 문자, 밑줄(_), $fh tlwkr
2. 대소문자 구별
3. 한글 사용 가능하지만 영문자 사용 권장
4. 예약어 사용 불가
변수의 메모리 수명: 변수가 생성되어 역할을 다한 후 해제되기까지의 주기
코드 내 어느 위치에서든 선언하여 전 영역에서 사용할 수 있는 변수
변수가 선언된 해당 블록에서 선언하여 범위 내에서만 유효하게 사용할 수 있는 변수
참고 링크
JavaScript - 전역변수, 지역변수, 변수범위, 변수 호이스팅(Hoisting)
<body>
<button class="btn" onclick="calc()">나이 계산하기</button>
<div id="result" class="show">(결과 값 표시)</div>
<script>
function calc() {
// 변수 선언
var currentYear = prompt('올해 연도를 입력하세요.', 'yyyy'); // 올해 연도를 지정할 변수
var birthYear = prompt('나이를 입력하세요.', 'yyyy');
var age;
age = currentYear - birthYear + 1;
// 올해 연도에서 태어난 연도를 빼고 1을 더함
// 결과값 출력
document.querySelector('#result').innerHTML = '당신의 나이는 ' + age + '살 입니다.';
// 아이디 값이 result인 부분에 age 값을 html에 삽입해라 ~ 머 대충 이런
}
</script>
</body>
📌 funtion
: 함수선언
📌 document.write()
: 화면에 텍스트 출력
📌 document.querySelector()
: css 선택자 요소를 찾아 결과값 표시
📌 .innerHTML
: HTML에 변경할 텍스트 삽입
참고링크
❣️getElementById 그리고 querySelector 차이점
<body>
<div id="contents">
<img src="images/sale.png" />
<ul>
<li>
<label for="oPrice">원래 가격</label>
<input type="text" id="oPrice" />원
</li>
<li>
<label for="rate">할인율</label>
<input type="text" id="rate" />%
</li>
<li>
<button onclick="showPrice()">할인 가격 계산하기</button>
</li>
</ul>
<div id="showResult"></div>
<script>
function showPrice() {
// input 태그에서 입력 받은 id 값(데이터)을 연결시켜주기
//.value -> 입력된 텍스트의 값만 가져오겠다는 의미
var originPrice = document.querySelector('#oPrice').value;
var rate = document.querySelector('#rate').value;
// 📌 1 = 100%
var savedPrice = originPrice * (1 - rate / 100);
document.querySelector('#showResult').innerHTML =
'상품의 원래 가격은 ' +
originPrice +
'원이고, 할인율은 ' +
rate +
'%입니다. 할인된 금액은 ' +
savedPrice +
'원 입니다.';
}
</script>
</div>
</body>
📌 .value
: 전달된 파라미터 객체가 가지는 (열거 가능한) 속성의 값들로 이루어진 배열을 리턴
피연산자에게 연산 명령을 내리기 위해 사용하는 기호
: 문자열 연결
: 더하기, : 빼기, : 곱하기, /: 나누기, %: 나머지, ++: 증감, --: 감소
<button class="btn" onclick="calc()">나이 계산하기</button>
<div id="result" class="show">(결과 값 표시)</div>
<script>
function calc() {
// 함수 선언
// 변수 선언
var currentYear = prompt('올해 연도를 입력하세요.', 'yyyy'); // 올해 연도를 지정할 변수
var birthYear = prompt('나이를 입력하세요.', 'yyyy');
var age;
age = currentYear - birthYear + 1;
// 올해 연도에서 태어난 연도를 빼고 1을 더함
// 결과값 출력
document.querySelector('#result').innerHTML = '당신의 나이는 ' + age + '살 입니다.';
// 아이디 값이 result인 부분에 age 값을 html에 삽입하라는 뜻!
}
</script>
<button>
태그를 누르면 onclick
이벤트로 스크립트의 calc()
함수가 실행된다.
calc()
함수가 실행되며 prompt
창이 두 개 뜨며 각각의 값을 입력하면 id= result
인 <div>
박스 안에 연산 결과가 표시된다. <script>
// 숫자를 입력받습니다.
var int = prompt('cm 단위의 숫자를 입력해주세요.');
// 입력을 숫자로 변경하고 cm 단위로 변경합니다.
var cm = Number(int); // 이 과정을 하지 않으면 string으로 출력됨
var inch = cm * 0.393701;
// 출력합니다.
alert(cm + 'cm는 ' + inch + 'inch 입니다.');
</script>
증감 연산자는 전위(++n)와 후위(n++)로 나뉜다. 이 부분이... 정말정말 헷갈린다.
우선 전위나 후위나 증감 연산자가 사용된 후의 n을 출력하면 둘 다 +1이 증가된 값을 갖는다. 여기는 괜찮지만... 전위 연산자가 사용되었느냐 후위 연산자가 사용되었느냐에 따라서 연산 결과가 달라진다...
a++ : a를 사용한 후에 a 값이 1 증가
++a : a를 1 증가한 후에 a 값 사용
a-- : a를 사용한 후에 a 값이 1 감소
--a : a를 1 감소한 후에 a값 사용
연산 결과는 '증감 연산 그 자체의 값'을 말한다. 증감연산자를 사용했을 때 값을 출력해보면 다음과 같다.
전위 연산자는 증가시킨 후에 값을 사용하기 때문에 10에 1이 증가된 후의 값을 사용해서 11 + 5 = 16이라는 결과 값을 얻었다.
후위 연산자는 사용한 후에 1을 증가시키기 때문에 10 + 5 = 15 라는 결과 값을 얻었다.
a = 1;
b = ++a; // 1.증가가 우선이라 ++a → a = 2. 증가된 값을 b에 대입 b = 2.
전위 연산자는 증가가 먼저 일어난다.
a = 1;
b = a++; // 1. 대입 연산을 먼저 한다. 따라서 b=1. 2. 이후 증감이 되기 때문에 a=2.
후위 연산자는 연산이 먼저 일어난다.
이 두 차이를... 잘... 생각해야 한다... 난 아직도 이걸 틀린다... 어려워 😂
수업 때... 난 이걸 또 틀려버림... 크게 대답하지 않아서 다행이라고 생각했다. 나란 빡대갈이... 코딩을 해도 되는지... 이젠 알겠군요... (하지만 또 틀릴듯...)
참고 링크
증감연산자 전위, 후위 (++n, n++) 차이점 쉽게 이해하기
: 값이 같은지 비교
: 값과 데이터 타입까지 같은지 비교
!=: 값이 다른지 비교
!==: 값 또는 데이터 타입이 다른지 비교
&& 논리곱: 두 개의 피연산자 값이 모두 참일 때만 참
논리합: 두 개의 피연산자 값 중 하나라도 참이면 참이고, 모두 거짓이면 거짓
논리 부정: 피연산자의 값이 참이면 거짓, 거짓이면 참
& 비트곱: 두 비트 중 모두 1일 때만 1
비트합: 두 비트 중 하나라도 1이면 1, 모두 0이면 0
비트 부정: 비트 값이 1이면 0, 0이면 1
^ 배타적 비트합: 두 비트가 같을 때 0, 다를 떄 1
(조건) ? a ! b ;
조건식이 참일 경우 a 실행, 거짓일 경우 b 실행
오른쪽 식의 결과를 왼쪽에 있는 변수에 대입하는 것!
a = b;
: a에 b의 값이 대입되어 a = 3, b = 3이 된다. a += b;
: a = a + b
의 연산이 이루어져서 a = 6, b = 3이 된다.