생각했던것 보단 걱정은 덜었다.
걱정 할 필요가 없었을지도.
이번 과제는 물론 메인은 개인과제다.
하지만 팀을 꾸려놓고 개인 과제만 하면 의미 없지 않은가?
멍석이 깔려있는데 춤이라도 춰야하지 않겠는가?
우선은 저번의 과오를 바로 잡기위해 이번에는 아주 빠르게 아이스 브레이킹을 진행하였고.
팀명 "한조" 를 만들었고 팀장은 어김없이 내가 되었지만 불만은 없다.
오히려 좋아 이대로 쭉쭉 동료들을 늘려가며 빠르게 습득할수 있게 하여 나중에 능력있는 동료들을 많이 만들어서
나의 영역을 늘려가겠다.
영역전개!
주마다 팀이 변경되어도 만나면 수월한 진행 못만나면 아쉬운 그런형태지만
조는 총 8개 줄어들 수 있고 내가 키운씨앗은 무너지지 않을것이며
확률은 아주 높다!
수월한 미래가 보인다 보여!
그럼 오늘 공부한 무근본 중의 악의 씨앗 JS에 대해 알아보자
변수와 상수
변수는 데이터를 저장할 수 있는 이름이 붙은 메모리 공간입니다. JavaScript에서는 변수를 선언할 때 var, let, 또는 const 키워드를 사용합니다.
데이터 타입
var
스코프: 함수 스코프를 가집니다. 즉, 변수가 선언된 함수 내에서만 유효합니다.
재할당: 재할당이 가능합니다.
호이스팅: 선언이 함수의 최상단으로 끌어올려지는 호이스팅이 발생합니다.
var x = 10;
if (true) {
var x = 20; // 같은 스코프에서 재선언
console.log(x); // 20
}
console.log(x); // 20
let
스코프: 블록 스코프를 가집니다. 즉, 변수가 선언된 블록 내에서만 유효합니다.
재할당: 재할당이 가능합니다.
호이스팅: 선언은 호이스팅되지만, 초기화 전에는 사용할 수 없습니다.
let y = 10;
if (true) {
let y = 20; // 다른 블록 스코프
console.log(y); // 20
}
console.log(y); // 10
상수는 한 번 값이 할당되면 재할당할 수 없는 변수를 의미합니다. JavaScript에서는 const 키워드를 사용하여 상수를 선언합니다.
const
스코프: 블록 스코프를 가집니다.
재할당: 재할당이 불가능합니다. 즉, 한 번 값이 할당되면 변경할 수 없습니다.
초기화: 반드시 선언과 동시에 초기화해야 합니다.
const z = 10;
// z = 20; // 오류: const 변수는 재할당할 수 없음
if (true) {
const z = 20; // 다른 블록 스코프
console.log(z); // 20
}
console.log(z); // 10
객체와 배열의 상수
const로 선언된 객체나 배열의 경우, 객체의 속성이나 배열의 요소는 변경할 수 있습니다. 즉, const는 변수의 참조를 고정하지만, 그 참조가 가리키는 객체의 내용은 변경할 수 있습니다.
변수: var와 let을 사용하여 선언하며, 재할당이 가능합니다. var는 함수 스코프, let은 블록 스코프를 가집니다.
상수: const를 사용하여 선언하며, 재할당이 불가능하고 반드시 초기화해야 합니다. const는 블록 스코프를 가집니다.
형변환
JavaScript에서 형변환(type conversion)은 값의 데이터 타입을
다른 타입으로 변환하는 과정을 의미합니다.
JavaScript는 동적 타입 언어이기 때문에,
변수의 타입이 실행 중에 변경될 수 있습니다.
형변환은 주로 두 가지 방식으로 이루어집니다.
암묵적 형변환(implicit conversion)과
명시적 형변환(explicit conversion)입니다.
암묵적 형변환은 JavaScript 엔진이 자동으로 타입을 변환하는 경우입니다. 예를 들어, 숫자와 문자열을 더할 때, 숫자가 문자열로 변환되어 결합됩니다.
let num = 5;
let str = "10";
let result = num + str; // 숫자 5가 문자열 "5"로 변환됨
console.log(result); // "510"
다른 예로, 불리언 값이 숫자와 결합될 때도 형변환이 발생합니다.
let bool = true;
let num2 = 1;
let result2 = bool + num2; // true는 1로 변환됨
console.log(result2); // 2
명시적 형변환은 개발자가 의도적으로 타입을 변환하는 경우입니다. JavaScript에서는 여러 가지 방법으로 명시적 형변환을 수행할 수 있습니다.
String() 함수 사용
let num = 123;
let str = String(num);
console.log(str); // "123"
toString() 메서드 사용
let num2 = 456;
let str2 = num2.toString();
console.log(str2); // "456"
Number() 함수 사용
let str3 = "789";
let num3 = Number(str3);
console.log(num3); // 789
parseInt()와 parseFloat() 사용
let str4 = "123.45";
let intNum = parseInt(str4); // 정수로 변환
let floatNum = parseFloat(str4); // 부동소수점으로 변환
console.log(intNum); // 123
console.log(floatNum); // 123.45
Boolean() 함수 사용
let value1 = 0;
let value2 = "Hello";
console.log(Boolean(value1)); // false
console.log(Boolean(value2)); // true
NaN: 숫자로 변환할 수 없는 문자열을 Number()로 변환하면 NaN이 됩니다.
let invalidNum = Number("abc");
console.log(invalidNum); // NaN
Falsy 값: JavaScript에서 false, 0, "" (빈 문자열), null, undefined, NaN은 모두 falsy 값으로 간주됩니다. 이 값들은 불리언으로 변환할 때 false로 평가됩니다.
연산자 우선순위: 형변환이 발생하는 상황에서 연산자 우선순위를 잘 이해하고 있어야 합니다. 예를 들어, + 연산자는 문자열 결합을 우선시합니다.
연산자
산술 연산자 (Arithmetic Operators)
산술 연산자는 기본적인 수학 연산을 수행합니다.
+ : 덧셈
- : 뺄셈
* : 곱셈
/ : 나눗셈
% : 나머지
** : 거듭제곱 (ES6에서 추가)
let a = 10;
let b = 3;
console.log(a + b); // 13
console.log(a - b); // 7
console.log(a * b); // 30
console.log(a / b); // 3.333...
console.log(a % b); // 1
console.log(a ** b); // 1000
비교 연산자 (Comparison Operators)
비교 연산자는 두 값을 비교하고 불리언 값을 반환합니다.
== : 동등 (값만 비교)
=== : 일치 (값과 타입 모두 비교)
!= : 비동등 (값만 비교)
!== : 불일치 (값과 타입 모두 비교)
> : 크다
< : 작다
>= : 크거나 같다
<= : 작거나 같다
console.log(5 == '5'); // true (값만 비교)
console.log(5 === '5'); // false (타입도 비교)
console.log(5 != '5'); // false
console.log(5 !== '5'); // true
console.log(5 > 3); // true
console.log(5 < 3); // false
논리 연산자 (Logical Operators)
&& : AND
|| : OR
! : NOT
let x = true;
let y = false;
console.log(x && y); // false
console.log(x || y); // true
console.log(!x); // false
비트 연산자 (Bitwise Operators)
& : 비트 AND
| : 비트 OR
^ : 비트 XOR
~ : 비트 NOT
<< : 왼쪽 시프트
>> : 오른쪽 시프트
>>> : 부호 없는 오른쪽 시프트
console.log(5 & 3); // 1 (0101 & 0011 = 0001)
console.log(5 | 3); // 7 (0101 | 0011 = 0111)
console.log(5 ^ 3); // 6 (0101 ^ 0011 = 0110)
console.log(~5); // -6 (비트 NOT)
console.log(5 << 1); // 10 (왼쪽 시프트)
console.log(5 >> 1); // 2 (오른쪽 시프트)
할당 연산자 (Assignment Operators)
= : 할당
+= : 덧셈 후 할당
-= : 뺄셈 후 할당
*= : 곱셈 후 할당
/= : 나눗셈 후 할당
%= : 나머지 후 할당
let num = 10;
num += 5; // num = num + 5
console.log(num); // 15
num *= 2; // num = num * 2
console.log(num); // 30
삼항 연산자 (Ternary Operator)
condition ? expr1 : expr2
let age = 18;
let canVote = (age >= 18) ? "Yes" : "No";
console.log(canVote); // "Yes"
typeof: 변수의 타입을 반환합니다.
console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
instanceof: 객체가 특정 클래스의 인스턴스인지 확인합니다.
let arr = [1, 2, 3];
console.log(arr instanceof Array); // true
이거 오늘 내로는 다 못적겠다 나머지는 내일...
함수
스코프 및 화살표함수
조건문
조건문 중첩
객체
배열
for문
break continue
'TIL' 카테고리의 다른 글
TIL_본캠프_8일차 (0) | 2024.11.06 |
---|---|
TIL_본캠프_7일차 (1) | 2024.11.05 |
본캠프_Week_1 (0) | 2024.11.01 |
본캠프_Week_1_회고록 (0) | 2024.11.01 |
[TIL] 본캠프_4일차 (0) | 2024.10.31 |
댓글