33jsconcepts24 JS33 - 08.즉시실행함수(IIFE), Modules, Namespaces IIFE (Immediately Invoked Function Expression) 익명의 클로저를 통해 “privacy”를 제공하는 설계 패턴 기본 사용법 !function() { alert("Hello from IIFE!"); }(); void function() { alert("Hello from IIFE!"); }(); IIFE 패턴의 핵심은 함수를 사용하여 이를 표현식으로 바꾸고 즉시 실행하는 것이다. 첫 번째 문자 인 !은 함수 문, 정의 대신 해당 함수를 표현식으로 만드는 것이다. 그런 다음 즉시 function을 실행한다. 전에 보았듯, function 문은 항상 function 키워드로 시작한다. 자바스크립트는 function키워드를 유효한 문장의 첫 단어로 볼 때마다 함수 정의가 수행될.. 2021. 5. 31. JS33 - 07.표현식과 구문(expression vs statement) 표현식expression: 단 하나의 Value(값)을 반환하는 코드 구문statement: 행동을 수행 (값이 기대되지 않음) 식 단일값 생성 반드시 상태를 변경하지는 않는다. 구문 값이 기대되는 곳에서 사용할 수 없다. 함수의 인수, 할당의 오른쪽, 피연산자, 반환 값 등 형태 if if-else while do-while for switch for-in with (deprecated) debugger variable declaration Function Expression VS Function Declaration test Function Declaration 함수구문 (선언) Hoisting 됨 변수 할당을 요구하지 않고 명명된 함수 변수를 정의한다. 독립 실행형 구문으로 발생하며 비-함수 블록 .. 2021. 5. 31. JS33 - 06.함수 범위, 블록 범위, 렉시컬(lexical) 범위 함수 스코프는 모든 변수가 함수에 속한다는 개념을 가진다. 따라서 함수 전체에서 사용/재사용이 가능하다.(실제로 중첩 된 스코프에서도 접근 할 수 있음). 이는 매우 유용하기에, Javascript 변수의 “동적(dynamic)” 특성을 최대한 활용하여 필요에 따라 다른 유형의 값을 취할 수 있다. 기본 스코프에서의 숨김 (Hiding In Plain Scope) 스코프-기반의 숨김을 사용하는데에는 여러 가지 이유가 있다. 소프트웨어 디자인 원칙 “최소 특권의 원칙”[최저 권한]의 이유인데, “최소 권한”또는 “최소 노출”이라고도 한다. 이 원칙은 모듈/객체를 위한 API 처럼 소프트웨어 설계에서 최소한 필요한 것만 노출하고 다른 모든 것을 “숨겨야”한다고 명시한다. 이 원칙은 변수와 함수를 포함할 스코.. 2021. 5. 31. JS33 - 05.== and === and typeof 1. == 와 === 요약 == Double Equal 동등연산자: 느슨한 평등 Value가 동일하면 true 유형 강제변환(암묵적 형변환 implicit type coercion)을 수행한다. === Triple Equal 일치연산자: 엄격한 평등(strict equality operator) Value와 Type이 모두 동일해야만 true 암묵적형변환(implicit type coercion)을 발생시키지 않는다. 2. Falsy JS는 0 을 false(bool)로 변환한다. Falsy values false- 부 울린 거짓 0 - 숫자 0 “” - 빈 문자열 null undefined NaN - 숫자가 아님 Falsy value comparison 규칙 (==) false, 0 , "" 셋은 서로.. 2021. 5. 31. JS33 - 04.암묵적 형변환(Implicit coercion) 예시 3 * "3" //9 1 + "2" + 1 //121 true + true //2 10 - true //9 const foo = { valueOf: () => 2 } 3 + foo // 5 4 * foo // 8 const bar = { toString: () => " promise is a boy :)" } 1 + bar // "1 promise is a boy :)" 4 * [] // 0 4 * [2] // 8 4 + [2] // "42" 4 + [1, 2] // "41,2" 4 * [1, 2] // NaN "string" ? 4 : 1 // 4 undefined ? 4 : 1 // 1 1. 형 변환 (Type coercion) 명시적 Explicit 개발자에 의해 의도적으로 값의 타입을 변환.. 2021. 5. 31. JS33 - 02.원시타입(Primitive Types) 니꼴라스 강의 요약 https://www.youtube.com/watch?v=IMyvCJKZSL8 String Numbers: ECMAScript has two built-in numeric types: Number and BigInt Integers floats Boolean Boolean represents a logical entity and can have two values: true and false. See Boolean and Boolean for more details. True False Null: '존재하지 않음' The Null type has exactly one value: null. 아예 정의되지 않은 변수와는 다르다. Null은 의도적으로 존재하지 않다고 정의된 것. Unde.. 2021. 5. 31. 이전 1 2 3 4 다음