<head>
...
<script>
let js = "amazing";
if (js === "amazing") alert("JavaScript is FUN!");
console.log(40 + 8 + 23 - 10);
</script>
</head>
<body>
<script>
src = "script.js";
</script>
</body>
10+20
✅ 변수명이 명료하다.
let myFirstJob = "Coder";
let myCurrentJob = "Teacher";
❌
let job1 = "programmer"
let job2 = "teacher"
JS에서 value는 둘 중 하나이다. 객체 또는 원시 값.
// 객체 값
let me = {
name: 'Jonas',
age: 30,
}
// 원시 값
let firstName='Jonas';
let age=30;
let age = 23; // 23.0을 가진 것과 같으나 둘다 Number type이다.
(예)
let children; // undefined
// 동적 타이핑 확인하기
let x = true;
console.log(typeof x); // boolean
x = "yes";
console.log(typeof x); // string
// undefined
let y;
console.log(y); // undefined
console.log(typeof y); // undefined
// 우리가 빈 변수를 선언할 때 변수의 값은 undefined이고,
// 변수의 타입은 undefined라는 뜻이다.
// (중요한 내용은 아니다.)
console.log(typeof null); // object
// null은 값과 값의 타입이 null이라는 뜻과 가깝다.
// 위처럼 object로 출력되는건 js의 typeof 버그로 여겨진다.
// null의 타입은 null이지 object가 아니다.
// 그러나 legacy 문제로 이 버그는 수정되고 있지 않다.
변수 선언은 의무가 아니다. → 아주 안좋은 아이디어. 현재 so-called scope에 변수를 생성하지 않고, global object에 생성하기 때문이다.
lastName = "jo";
console.log(lastName);
연산자는 기본적으로 값을 변환하거나 여러 값을 결합할 수 있게 해준다.
수학, 비교, 논리, 할당 연산자 등 많은 여러 연산자가 있다.
수학 연산자가 할당 연산자보다 먼저 실행된다.
수학 연산자가 할당 연산자보다 먼저 실행되는 이유 → mdn operator precedence
Operator precedence - JavaScript | MDN
- addition/substraction : left-to-right
- assignment(할당) : right-to-left
let x,y;
x = y = 25 - 10 - 5; // (1) x = y = 10, (2) x = 10
console.log(x,y);
빼기 연산자가 우선순위가 높고 왼쪽에서 오른쪽으로 가기 때문에 뺄셈이 진행된다.
할당이 그 다음으로 진행되고 , 오른쪽에서 왼쪽으로 가기 때문에 x,y의 값이 둘다 10이 된다. 진행 방향이 반대였다면, x는 undefined, y는 10이 됐을 것이다.
괄호 안에 있는 것들이 제일 먼저 계산된다.
제곱이 먼저 계산된다.
크기 비교가 먼저 되므로 부등호 기준 좌항 우항의 크기를 비교한다.
and가 or보다 우선순위가 높다.
const firstName = 'Jonas';
const job = 'teacher';
const birthYear = 1991;
const year = 2037;
const jonas = "I'm " + firstName + ', a' + (year - birthYear) + ' years old' + job + '!";
console.log(jonas);
// I'm Jonas, a 46 years old teacher!
// 위에서 숫자가 문자열로 바뀌기 때문에 year과 birthYear 사이를 괄호로 묶어줘야 계산된다.
// (타입 변환)
백틱(`) 문자를 사용한다.
→${}
사용 가능
→ 멀티 라인을 표현하기 쉽다. 따옴표를 사용했을 때는 공백 문자 \n
을 사용해야 했음.
형변환이 불가능한 입력을 넣으면 → NaN
출력
console.log(Number('jonas')); // NaN
console.log(typeof NaN);
// number. 조금 이상하고 중요하진 않으나, 숫자는 맞지만 유효하지 않은 숫자라는 뜻.
// 숫자 -> 문자열
console.log('I am' + 23 + ' years old');
// 문자열 + 숫자 + 문자열 => 플러스 연산자는 문자열로의 coercion이 일어난다.
console.log('23'+'10'+3); // 23103
console.log(2+3+4+'5'); // 95
// 문자열 -> 숫자
console.log('23'-'10'-3); // 10. 연산자가 수행할 수 있는 유일한 경우로 출력.
console.log('23'*'2'); // 46
console.log('23'/'2'); // 11.5
console.log('10'-'4'-'3'-2+'5'); // 15
이런 유용한 정보를 나눠주셔서 감사합니다.