JS 언어의 특징
1. 객체 지향 프로그래밍 지원
객체를 생성하고 관리하는 데에 강점이 있음. 이를 통해 복잡한 기능을 구현할 수 있음
-절차지향 : 순서대로 실행되는 일련의 과정을 단계적으로 기술해 프로그램을 만듦
ㄴ첫 번째 일을 처리한 다음에 두 번째 일을 처리하고, 그 다음에 세 번째 일을 처리
-객체지향 : 데이터와 함수를 객체라는 그룹으로 묶어서 처리 하는 법
ㄴ 각 객체는 상태와 행동을 가지고 있으며, 상태는 객체의 속성이라고도 함
js에서 객체를 만들 때는
객체 : {중괄호} 사용
속성 : 쉼표,
ㄴ이름: 문자열 값: 다양한 데이터 타입을 사용할 수 있음
메소드 : 객체 내부의 함수
*속성의 값으로 함수를 추가할 수 있음
https://insidepixce.tistory.com/75
객체를 생성하는 법 8가지를 정리한 티스토리 첨부
확인해보면 도움이 될 것이다.
-> 객체를 만들어 필요한 속성과 메소드를 추가하여 사용
2. 동적 타이핑 언어
동적 타이핑 언어란?
자바스크립트가 아닌 다른 언어에서는 변수를 지정할때 타입을 지정해줘야 함
#타이핑이라는 단어가 조금 생소하게 느껴진다면 type + ing라고 생각하면 좋다.
정적 타이핑 언어 : java
public class Example {
public static void main(String[] args) {
int myVariable = 10;
System.out.println(myVariable); // 출력: 10
myVariable = "Hello, World!"; // 오류: 타입 불일치
System.out.println(myVariable);
}
}
이를테면, C, C++, Java, C# 등이 정적 타이핑 언어에 해당한다.
위의 예시 코드에서 'myvariable' 은 처음에는 정수 타입인 int로 선언 , 10이라는 값이 할당됨.
그러나 이후 문자열인 "Hello, World!"를 할당하려고 해 컴파일 오류가 발생함
java에서는 변수의 타입이 컴파일 시에 결정되기 때문에 한 번 타입이 지정되면 다름 타입의 값을 할당할 수 없음
장점 -> 컴파일 시에 타입 체크를 수행하여 오류를 사전에 방지
단점 -> 동적 타이핑 언어에 비해 유연성이 떨어짐
https://insidepixce.tistory.com/76
*숫자열과 문자열을 동일한 변수에 저장할 수 있다
let myVariable = 10;
console.log(myVariable);
myVariable = "Hello, World!";
console.log(myVariable); // 출력: Hello, World!
첫번째 출력 : 10 두번째 출력 : Hello, World!
*동적 타이핑은 연산에 대해서도 적용된다
let sum = 5 + 10;
console.log(sum)
sum = "5" + "10";
console.log(sum);
첫번째 출력 : 15 두번째 출력 : 510
따로 타입을 정해주지 않았는데도 적용되는 것을 볼 수 있다
*배열은 여러 타입의 요소를 포함 할 수 있다
let myArray = [1, "two", true];
console.log(myArray);
출력: [1, "two", true]
*객체의 속성은 런타임 중에 추가하거나 수정할 수 있다
let myObject = { name: "gyodam", age: 21 };
console.log(myObject);
myObject.email = "insidepixce@gmail.com";
console.log(myObject);
출력1 : { name: 'gyodam' , age : 21} 출력 2 : { name: :"gyodam", age: 21, email: "insidepixce@gmail.com" }
3. 함수형 프로그래밍 지원
함수를 일급 객체로 취급하고 , 고차 함수를 지원함.
-> 코드의 재사용성과 가독성을 높임
따로 포스팅을 하려 했으나, 2주차에 자세히 배울 예정이기에 이 포스트에 서술함.
특성
1. 변수에 할당 가능함
2. 함수의 매개변수로 전달할 수 잇음
3. 함수의 반환값으로 사용할 수 있음
4. 동적으로 프로퍼티를 할당하거나 메서드를 추가할 수 있음
즉, 일급 객체는 Javascript에서 다른 객체와 마찬가지로 취급됨.
함수형 프로그래밍에서는 함수를 값으로 다루어 코드를 조합하는 기법을 사용함.
// 변수에 할당
const add = function(a, b) {
return a + b;
};
// 함수의 매개변수로 전달
function calculate(operation, a, b) {
return operation(a, b);
}
console.log(calculate(add, 5, 3)); // 출력: 8
// 함수의 반환값으로 사용
function createMultiplier(multiplier) {
return function(num) {
return num * multiplier;
};
}
const double = createMultiplier(2);
console.log(double(5)); // 출력: 10
// 동적으로 프로퍼티 할당 및 메서드 추가
const person = {};
person.sayHello = function() {
console.log("Hello!");
};
person.sayHello(); // 출력: Hello!
고차함수란?
함수를 인자로 받거나 , 함수를 반환하는 함수
// 함수를 매개변수로 받는 고차 함수
function operationOnNumbers(operation, a, b) {
return operation(a, b);
}
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
console.log(operationOnNumbers(add, 5, 3)); // 출력: 8
console.log(operationOnNumbers(subtract, 5, 3)); // 출력: 2
// 함수를 반환하는 고차 함수
function createMultiplier(multiplier) {
return function(num) {
return num * multiplier;
};
}
const double = createMultiplier(2);
console.log(double(5)); // 출력: 10
4. 비동기 처리
작업을 순차적으로 기다리지 않고, 병렬로 처리할 수 있도록 하는 방식
항해 99 15기 node.js 1주차 강의 중 2강까지의 내용정리
'2023 공부한것들' 카테고리의 다른 글
[node.js] 자바스크립트의 연산자 8종 (0) | 2023.06.13 |
---|---|
[node.js] 형변환 (1) | 2023.06.13 |
[node.js] javascript의 역사 (0) | 2023.06.13 |
런타임이란? (런타임 시점) (0) | 2023.06.13 |
[node.js] javascript에서 객체를 생성하는 방법 8가지 (0) | 2023.06.13 |