비동기 작업이 가질 수 있는 3가지 상태 2초 뒤에 전달받은 값이 양수인지 음수인지를 판별하는 작업 만들기 function isPositive(number, resolve, reject) { setTimeout(() => { if(typeof number === "number") { // 성공 -> resolve resolve(number>=0 ? "양수" : "음수"); } else { // 실패 -> reject reject("숫자형 값이 아닙니다.") } }, 2000) //2초 대기 } isPositive(10, // 10은 숫자형이고 양수이기 때문에 성공 (res) => { console.log("성공적 수행 : ", res);// }, (err) => { console.log("실패함 : ",..
이런 상황을 가정하자 실행 순서는크게 상관이 없다고 가정하자. 연산 과정은 코드 한줄한줄마다 다 실행이 된다고 가정. 실습 먼저 동기적 함수 function taskA() { console.log("A 작업 끝"); } taskA(); console.log("코드 끝"); 비동기적으로 바꾸면 function taskA() { setTimeout(() => { console.log("A 작업 종료") }, 2000); // 2초 대기 } taskA(); console.log("코드 끝"); 이번엔 콜백 함수를 활용 function taskA(a, b, callback) { // 파라미터와 콜백함수 추가 setTimeout(() => { const res = a + b; callback(res); }, 30..
function isKoreanFood(food) { if (food === "불고기" || food === "비빔밥" || food === "떡볶이") { return true; } return false; } const food1 = isKoreanFood("불고기"); console.log(food1); const food2 = isKoreanFood("파스타"); console.log(food2); true false 출력됨 이거 업그레이드 가능하다. 입력받은 한식들 중에 해당하는 파라미터가 존재하는지 안하는지만 나타내면 되는 거다. function isKoreanFood(food) { if (["불고기" ,"비빔밥","떡볶이"].includes(food)) { return true; } retu..
단락회로 평가 논리 연산에서 첫 번째 피연샂나의 값만으로 해당 식의 결과가 확실할 때, 두 번째 값은 평가하지 않는 것. truthy와 falsy에서 const getName = (person) => { if(!person) { return "객체가 아닙니다." } return person.getName; }; let person;// undefined로 할당했으나 저 분기에 걸려서 에러 안 났음. const name = getName(person); console.log(name); 이 코드는 "객체가 아닙니다." 출력됨. const getName = (person) => { return person && person.name; // person이 undefined기 때문에 뒤의 값을 고려할 필요가 x..
ex. 기분에 따라 하는 행동 출력하기 function mood(state) { if (state === "good") { // 기분 좋을 때 하는 동작 sing(); } else { // 기분 나쁠 때 하는 동작 cry(); } } function cry() { console.log("액션 : CRY"); } function sing() { console.log("액션 : SING"); } function dance() { console.log("액션 : DANCING"); } mood("good"); 상황에 맞게 하나의 함수로 만드는 게 가능해진다.
1. 순환 함수 (forEach()) 이거를 const arr = [1, 2, 3, 4]; for (let i = 0; i console.log(elm)); 이렇게 바꾸는 거 가능. 그냥함수 형태로 바꾸면 arr.forEach(function (elm) { console.log(elm); }); 출력 결과는 arr.forEach(function (elm) { console.log(elm * 2); }); 하면 2. map() - 원본 배열의 모든 원소를 순회하면서 연산을 해서 반환할 수 있게 만들어주는 함수. 새로운 배열을 리턴함. 응용 2. ..
CSRF(Cross-Site Request Forgery) 웹 애플리케이션에서 발생하는 보안 취약점 중 하나. 이 취약점은 공격자가 특정 웹 페이지에 피해자를 유도하여, 피해자의 권한을 이용하여 악의적인 요청을 보내게 만들어 발생한다. CSRF 공격의 기본적인 원리는 다음과 같다 > 피해자 로그인 피해자는 웹 애플리케이션에 로그인한 상태여야 한다. > 공격자의 페이지 방문 피해자는 공격자가 제작한 웹 페이지를 방문한다. 이 페이지는 악성 코드를 포함하고 있다. > 악성 요청 실행 공격자의 페이지를 방문한 피해자는 악성 코드로부터 자동으로 특정 액션을 수행하게 된다. 이 때, 피해자의 권한으로 웹 애플리케이션에 악성 요청이 전송된다. > 피해자의 권한으로 요청 실행 웹 애플리케이션은 해당 요청을 피해자의 ..