Ch1. CSS

1. Basic Reset using the universal selector

  • box-sizing: border-box; 요소의 크기를 테두리와 패딩을 전부 포함해서 적용시킨다.
  • universel selector를 통해 모든요소의 마진과 패딩을 없애준다.
  • padding은 상속되지 않으므로, body에만 padding을 넣어준다
  • 폰트와 색깔은 상속되므로, body에 선언해준다.

*{

margin: 0;

padding: 0;

box-sizing: border-box;

}

body {

font-family: "Lato", sans-serif;

font-weight: 400;

font-size: 16px;

list-style: 1.7;

color : #777;

padding: 30px;

}

2. How to set project-wide font definitions

  • body에 전체적으로 사용할 폰트와, 폰트사이즈, 색상등을 설정해준다.

3. How to clip parts of elements using clip-path

  • clip path를 통해 다각형으로 요소를 자를수 있다. 설정한 svg를 통해서도 설정가능하다.
  • #clip-path { clip-path: circle(40% at 50% 50%); background : url("http://resrc.devdic.com/img/bysize/below_200/01.png") center/cover; width : 350px; height : 350px; }
  • https://bennettfeely.com/clippy : clip path를 시험해볼 수 있는 사이트

  

 

Clippy — CSS clip-path maker

About Clip Paths The clip-path property allows you to make complex shapes in CSS by clipping an element to a basic shape (circle, ellipse, polygon, or inset), or to an SVG source. CSS Animations and transitions are possible with two or more clip-path shape

bennettfeely.com

4. etc

  • background-size : cover : 가로세로 비율을 맞추면서, 요소를 전부 덮을 수 있도록 확장시킨다.
  • background-position : top : 백그라운드의 위치를 조정해주는 것으로, top은 키워드 밸류이다. 그 위치를 기준으로 짤리는 이미지를 결정한다.

1. Union Type

function combine(input1 : number|string,input2 : number|string){
    // union type으로 했을시, 타입스크립트에서는 여러개의 타입이 있는 사실만 알지,
  // 그안에 무슨 타입이 있는지 몰라서 경고 문구가 나온다.
    //const result = input1 + input2;
    let result;
    if ( typeof input1 === 'number' && typeof input2 === 'number'){
        result = input1 + input2;
    } else {
            result = input1.toString() + input2.toString();
  }
    return result
}
const combineAges = combine(20,36);
  • 서로 다른 종류의 값을 사용할 때 사용하는 타입
  • union type으로 했을시, 타입스크립트에서는 여러개의 타입이 있는 사실만 알지,
    그안에 무슨 타입이 있는지 모른다.
  • 그러므로 union 타입을 썼을 때, 다른 타입의 메소드를 쓸려면 타입가드로 타입스크립트에 무슨 타입인지 알려줘야한다.

2. Literal type

  • literal의 사전적 정의는 정확한이다. number string같이 넓은 범위의 타입을 지정하는 것이 아닌 특정 데이터 변하지 않는 데이터를 지정하는 것이 Literal type이다.
  • 추가적인 공부 : Template Literal https://toss.tech/article/template-literal-types

3. Type aliases

  • 사용자가 지정한 타입을 만들어준다.
  • 자주 쓰이는 union type들을 타입 별칭으로 동일한 유형을 설정 해줄수 있다.
type 타입별칭 = 타입1 | 타입2 | 타입3 ... | 타입N

4. function type

  • 함수에 매개변수에 type을 설정하는 것 뿐만 아니라, return되는 반환값에도 설정이 가능하다.
function add(n1 : number, n2: number) : number {
        return n1+n2
}
  • 타입스크립트가 추론이 가능한 반환 타입이면, 반환 타입을 명시하는 것보다. 타입스크립트가 타입을 추론하는게 좋다.
  • 아무것도 반환하지 않을때에는 void 로 한다.
  • undefined 라는 타입이 타입스크립트에는 존재하지만, 함수에서 반환문이 없으면, 기술적으로는 undefined 가 되지만 반환타입에는 void를 써야한다.
  • 만약 함수에서 return 으로 아무 반환값을 주지 않는 것을 반환할때에는 undefined 를 함수타입으로 쓸순 있지만, 이때에도 void 도 적용이 가능은하다.

5. functions as type

// Bad situation
function add(a : number, b: number) : number{
    return a+b;
}
let combine;
combine = add;
console.log(combine(5,3)); // 8
//cursor on combine : combine type is any;
combine = 5;
// therefore combine can insert any type
  • 위와 같은 상황에서 함수를 할당했을때, 변수에는 별다른 타입을 병기하지 않았기 때문에 any 타입이 되고, 우리가 원치 않는 타입으로 변화할수가 있다.
let combine : Function;

let combine : (a:number,b:number)=> number;
  • 해결방법은 2가지 이다.
  • 첫번째는 Function 타입이라고 명시하는것이다.
  • 하지만 이 방법은, 어느 함수가 와도 되므로, 좋지 않은 방법이다.
  • 두번째는 함수형태의 타입을 지정해주는 것이다.
  • 화살표 함수와 비슷하게, 인수로 들어오는 타입과 return 되는 타입을 명시해주면 된다.
  • 매개변수는, 실제 함수의 매개변수 이름과 동일할 필요가 없다.
  • 위와 같은 구조의 함수 모양일때에만 할당할수 있게 된다.

6. callback

function addAndHandle(n1 : number, n2 : number, cb : (num :number)=>void){
        const result = n1 + n2;
      const notUsed = cb(result);
}

addAndHandle(10,20,(result)=>{
    console.log(result) 
    return result})
  • 콜백함수 의 타입을 결정지어, 미리 콜백함수의 인자값으로 무엇으로 들어오고, 반환되는지 알수 있는 이점이 있다.
  • 그리고 반환하는 타입에 void가 있는데, return 되는 값이 있는데 괜찮다.
  • 그 이유는 return 타입을 void로 함으로서, 이 함수의 반환값을 쓰지 말라고 명시적으로 되어있고
  • 반환된 값 또한 void 타입이기 때문에, 다른거와 쓸 수 없게 된다.

7. unknown Type

  • any와 다르게 어떤 값이 들어올지 모를때 사용할수 있다.
  • any는 어떤 값이여도 상관이 없는거고,
  • undefined는 어떤 값이 들어올지 모르고, 나중에 타입을 정할때 사용이된다.
  • 그러므로 undefined를 할당한 변수는 메소드나 변수등에 아예 접근이 안된다.
  • 이 undefined를 해결을 할려면, typeof와 같은걸로 타입가드를 통과해야지만 사용을 할 수 있다.

8. never Type

function generateError(message : string, code : number) : never{
      throw {message : message, errorCode : code }
}

generateError('An error occurred',500)
  • 절대 리턴값을 절대로 내보내지 않거나 항상 오류를 출력하는 타입일때 never Type을 쓴다.
  • error를 thorw 하거나 무한반복문이 걸렸을때와 같이 아무값이 절대 반환이 안될때 사용한다.

'프로그래밍언어 > Typescript' 카테고리의 다른 글

타입스크립트 타입  (0) 2022.07.10
타입스크립트 타입 vs 자바스크립트 타입  (0) 2022.07.04
TS 공부  (0) 2022.05.12

1. Number Type

  • 숫자
  • All numbers, no differentiation between integers or floats

2. String Type

  • 백틱, 작은따옴표, 큰 따옴표
  • All text values

3. boolean Type

  • true of false
  • Just these two, no “truthy” or “falsy”

4. Object

  • 객체 타입 (컴파일 단계에서 명시적으로 선언을 해주거나, 기본적으로 할당되었을때 타입스크립트가 인식한다)
  • 중첩 객체 또한, 객체 안에 객체에 대한 타입을 명시해주면 가능하다.
  • Any Javascript object, more specific types are possible

5. Array

  • [1,2, 3]
  • Any javascript array type can be flexible or strict
  • 가변적인 길이를 가질 수 있으면 유연한 특성을 가지고 있다.

6. tuple

  • [1, 2]
  • Added by Typesciprt : Fixed-length array
  • 타입스크립트에서 추가된 타입으로, 길이와 타입이 고정된 배열이다.
const person : {
name : string;
age : number;
hobbies : string[];
role : [number, string];
} = {
name : 'mmm',
age : 30,
hobbies : ['Sports', 'Cooking'],
role : [2, 'author']
// role : string|number[]
// union type으로 추론을 한다.
}
  • 하지만 튜플로서 값을 잘못된거 넣거나, 재할당은 막아주지만, 배열의 메소드인 push pop은 막지 못한다.

7. Enum

  • enum {NEW, OLD}
  • Added Typescirpt : Automatically enumerated global constant identifiers
  • 매직 넘버로 숫자로 할 시, 이게 무엇인지 알기 어려워진다. 그러므로, 이걸 관리하기 위한 방법으로 Enum을 사용한다.
// 사용자가 만든 타입이므로 대문자로 시작
enum Role {
 ADMIN,READ_ONLY,AUTHOR
};
// 위와 같이 할시 앞에서부터 0
// 기본값은 0 으로 시작
// 초기값을 다른 숫자로 할시 그 숫자를 기준으로 값이 증가
// 별도로 추가적인 값을 할당할수도 있다.

8. Any

  • *
  • Any kind of value ,no specific type assignment
  • 와일드카드 같은..
  • any는 쓰지말자

'프로그래밍언어 > Typescript' 카테고리의 다른 글

[TS] Advanced Type  (0) 2022.07.13
타입스크립트 타입 vs 자바스크립트 타입  (0) 2022.07.04
TS 공부  (0) 2022.05.12

자바스크립트 typeof는 런타임 중에 에러를 체크한다.

 

타입스크립트는 타입을 컴파일 중에 체크를 해 에러를 미리 방지해준다.

 

'프로그래밍언어 > Typescript' 카테고리의 다른 글

[TS] Advanced Type  (0) 2022.07.13
타입스크립트 타입  (0) 2022.07.10
TS 공부  (0) 2022.05.12

1. ts에 대한 타입은 type이나 interface를 통해 지정이 가능하다.

2. 만약 객체의 프로퍼티가 나중에 존재하거나 그럴때에는 선택적 프로퍼티인 ?을 넣어서 선언을 해준다.

3. 배열은 타입[] 으로 선언을 해준다.

4. Element의 subset이 HTMLElement이다.

5. 함수의 리턴값이 여러종류일 때 제너릭을 이용해서, 문제를 해결할 수 있다.

6. Map의 get은 선언한 타입이거나 undefined가 올 수있다. 그러니 널병합연산자로 undefined를 제거해줄수 있다.(부정확)

7. interface는 extends을 통해 확장이 가능하고, 이것은 type일때에는 &와 비슷하다.

8. interface는 여러번 정의가 가능하고, 그럴때마다 프로퍼티가 병합이 된다.

'프로그래밍언어 > Typescript' 카테고리의 다른 글

[TS] Advanced Type  (0) 2022.07.13
타입스크립트 타입  (0) 2022.07.10
타입스크립트 타입 vs 자바스크립트 타입  (0) 2022.07.04

3일차

1. 비교 연산자

1.1 비교 연산자

  • 비교 연산자는 불린형을 반환한다.

  • 문자열을 비교할때, 유니코드 순으로 비교를 하고, 뒤쪽의 문자열 일수록 크다고 생각한다.

  • 각 위치별로 비교를 하고, 한쪽이 크면 큰 곳의 값을 반환하고, 종료한다.

  • 만약 비교가 종료되었는데도, 동일하고 한쪽 문자열의 길이가 더 길다면, 긴 문자열이 더 크다고 결론 낸다.

    alert('B'>'C') //false
    alert('BEE'>'BE') //true
  • 만약 다른형을 가진 값끼리 비교를 했을 때에는, 이 값들을 숫자형으로 변환 뒤 비교를 한다.

    alert('2'>1) //true
    alert('0'==0) // true
    alert(true == 0) //false
  • 문자열 '0'Boolean으로 판단시 false가 나오지만, 비교연산자로 0과 비교시 true를 반환한다.

    • 그 이유는 위의 설명과 같이 문자열을 숫자형으로 바꿔서 비교했기 때문이다.

1.2 일치 연산자

  • 비교연산자 중 비교 연산자는 0false를 구분하지 못하므로, 좀더 엄격하게 비교를 할때에는 일치 연산자 를 사용하여, 값을 비교한다.
  • 일치연산자나 불일치연산자(!==)를 사용하면, 형변환 없이 값을 비교할 수 있으므로, 좀 더 엄격하게 비교할때 사용이 된다.

1.3 null과 undefined

  • nullundefined를 일치연산자를 하면, 자료형이 달라서 false를 반환하지만, 동등연산자인 ==를 하면 true를 반환한다.
alert(null == undefined)  // true
alert(null === undefined )//false
  • 그러나, 비교연산자를 이용해 null0으로 변환, undefinedNaN으로 변환된다.
  • nullundefined는 동등연산자 ==일때는 형변환을 하지 않고, 비교연산자인 >= ,>일때는 형변환을 한다.
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
  • undefinednull은 동등연산자에서 null이나 undefined가 아니면 false를 반환한다.

2. if와 '?'를 사용한 조건 처리

2.1 if

  • if문은 괄호안의 조건을 평가해, 그 결과가 true라면 코드 블록을 실행한다.
  • if문은 괄호안의 조건을 불린값을 변환한다.
    • 0,"",null,undefined,NaN 값은 false로 변환, 그 외의 값은 true로 반환한다.
  • if문의 코드블록은 단 한줄이더라도 {}중괄호롤 감싸는걸 추천한다.

2.2 else 문

  • else문은 if문 안의 조건이 false일 때 실행된다.

2.3 else if 로 복수 조건 처리하기

  • 다수의 조건을 처리할 때, if문 뒤에 else if문을 더 붙여 조건을 판단한다.

2.4 조건부 연산자 ?

  • 조건부 연산자는 if문을 좀 더 간결하게 표현가능하다.

    let result = condition ? value1 ? value2
    // condition이 참이면, value1을 반환, 거짓이면 value2를 반환

2.5 다중 ?

let result = (condition1) ? value1 : 
(condition2) ? value2 : 
(condition3) ? value3 :
value4;
  • 위의 예시의 같은 경우 codition1이 참이면 value1, 거짓이면 두번째 condition2로 간다.
  • condition2가 참이면 value2를 거짓이면 condition3로 간다.
  • condition3이 참이면 value3 거짓이면 value4를 반환한다.
if (condition1) {
    result = value1
} else if (condition2){
    result = value2
} else if (condition3) {
    result = value3
} else{
    result = value4
}
  • 위의 다중 ?은 다음과 같이 나타낼수 있다.

Appendix

  • 조건부 연산자 ?를 남용하지 말고, 조건에 따라 다른 반환값을 할당해야할때만 쓰는 것을 추천한다.

3. 논리 연산자

  • 논리연산자에는 `||`(OR),`&&`(AND),`!`(NOT)이 있다.

  • `OR`와 `AND`는 파이썬과 같은 단축평가를 한다.

  • `OR`연산자는 가장 첫번째 `truthly`인 피연산자를 반환하고, 만약 전부 `false`일시에는 마지막 피연산자를 반환한다.

alert(""||0||5) //5
alert(""||5||0) //5
  • `AND`연산자는 `OR`과 반대로 첫번쨰 `falsy`인 피연산자를 찾는다. 첫번쨰 `falsy`인 피연산자를 반환하고, 만약 전부 `true`일 시에는 마지막 피연산자를 반환한다.
alert(5&&0&&3) // 0
alert(5&&4&&2) //2
  • `AND` 연산자가 `OR` 연산자보다 우선순위가 높다.

  • `Not`연산자는 느낌표인 `!`을 쓰는데, 먼저 피연산자를 불린형으로 변환후 이에 반대되는 값을 반환해준다.

  • 위와 같은 특징을 이용하면, `!!` 와 같이 `Not`연산자를 두개 연속으로 쓸시에는 `Boolean` 함수를 쓴것과 동일한 효과를 나타낸다.

  • `Not`은 논리연산자 중 가장 높은 우선순위에 있다.

4. null 병합 연산자

  • 병합연산자인 ``??``를 사용하면, 짧은 문법으로 그 값이 **확정되어있는** 변수를 찾을수 있다.

    x = a ?? b
    x = (a !== null && a!== undefined) ? a : b;
  • 위의 두 로직이 같다고 할 수 있다.

  • `??`와 `||`(OR)와 비슷하다고 생각할 수 있지만, `||`는 첫번쨰 `truthy` 값을 반환하는데 반해 `??`은 **정의된** 값을 반환하는게 다르다.

alert(0 || 100) // 100
alert(0 ?? 100) // 0
  • `OR`연산자는 숫자 0 은 `false`이므로, 100을 반환해주고, `??`은 연산자는 0이라는 정의되므로, 0을 반환해준다.

  • `??`연산자는 `||`와 `&&`연산자와 동시에 사용하는것을 금지한다! 함께 사용시 문법에러가 발생한다.

3일차 소감

  • 잘 모르던 null 병합연산자와, `?`을 이용한 다중 조건 처리

  • 일치 연산자에서 `null`과 `undefined`의 동작방식에 대해 잘 알 수 있었다.

출처 : 모던 자바스크립트 튜토리얼

'프로그래밍언어 > Javascript' 카테고리의 다른 글

자바스크립트 공부 2일차  (0) 2021.02.24
자바스크립트 공부 1일차  (0) 2021.02.19
자바스크립트 공부 스타트  (0) 2021.02.19

2일차 자바스크립트 스터디

1. alert,prompt,confirm을 이용한 상호작용

1.1 alert

  • alert 창은 작은 모달창을 띄우고, 사용자가 모달창 내의 버튼을 누르기 전까지 나머지 부분과 상호작용이 불가능하다.

1.2 prompt

prompt(title,[default])
  • prompt는 사용자에게서 입력을 받을 수 있는 창을 띄우고, 사용자가 입력을 하기도 하며, 취소를 누를수도 있다.
  • 만약 사용자가 입력할시 문자열을 반환 해주고, 취소할시에는 null 값을 반환한다.
  • defalut는 초기값을 뜻하며, 필수요소는 아니다.

1.3 confirm

confirm(question)
  • confirm은 매개변수로 받은 question에 대한 확인 취소 버튼이 있는 모달창을 보여준다.
  • 확인 버튼은 true 그외의 행동은 false를 반환한다.

1.4 요약

  • 모달 창의 위치는 브라우저가 결정하고, 대개 브라우저의 중앙에 위치한다.
  • 그리고 위 모달창을 떠 있는 시간 동안은 스크립트의 실행이 일시 중단되고, 사용자가 창을 닫기 전까지는 나머지 페이지와 상호작용이 안된다.
  • 모달 창의 모양은 브라우저마다 다르고, 개발자가 모달창의 모양을 수정할 수 없다.

2. 형 변환

함수와 연산자에 전달되는 값은 적절한 자료형으로 자동 변환된다. 이런 과정을 형변환 이라고 한다.

형변환은 전달받은 값을 의도를 갖고 원하는 타입으로 변환을 할때에도 해당된다.

2.1 문자형으로 변환

let value = 123
value = String(value)
alert(typeof value)
  • 문자형은 대부분 예측 가능한 방식으로 일어난다.

2.2 숫자형으로 변환

let str = '123'
alert(typeof str) // string
let num = Number(str)
alert(typeof num) // number
  • 숫자형으로 형변환시, 숫자 이외의 글자가 들어있는 문자열을 숫자형으로 변환시 NaN이 된다.
  • undefined -> NaN
  • null -> 0
  • true,false ->0,1
  • string -> 양 끝의 공백을 제거 후 공백제거 후 남아있는 문자열이 없으면 0 문자열내에 숫자를 제외한 문자가 있으면 NaN이 반환된다.

2.3 불린형으로 변환

alert(Boolean(1)) //true
alert(Boolean(0)) //false
  • 숫자 0, 빈 문자열 ,null,undefined,NaN과 같은 값들은 false가 된다
  • 문자열 "0"" "false가 아닌 true가 반환된다.

3. 기본 연산자와 수학

  • 피연산자를 하나만 받는 연산자는 단항 연산자
  • 두개의 피 연산자를 받는 연산자는 이항 연산자

3.1 수학 연산자

  • *,(곱셈)

  • +(덧셈)

  • -(뺄셈)

  • /(나눗셈),

  • %(나머지연산자)

  • **(거듭제곱)

3.2 이항 연산자 +와 문자열 연결

  • 덧셈 연산자는 피연산자로 문자열이 전달되면 덧셈연산자는 덧셈이 아닌 문자열을 병합을 한다.
  • 두개의 피연산자 중 하나가 문자열이면, 다른 하나도 자동으로 문자열로 형 변환을 해서, 병합을 한다.
alert(2+2+'1') // 4+'1'이 되어 '41'이 출력된다.
  • +가 아닌 다른 수학연산자는 피연산자를 숫자형으로 변환시키고 계산하는 것과 대조적이다.

3.3 단항 연산자 +와 숫자형으로의 변환

  • 덧셈 연산자는 단항 연산자로 쓰인다.
  • 단항연산자로 쓰일때에는 문자열인 숫자를 숫자형으로 변환을 해준다. Number와 동일한 일을 해준다.

Appendix

  • 연산자 우선순위 표 를 보면, 각 연산자마다 우선순위가 있고, 우선순위가 높은것부터 적용된다.

3.4 할당연산자

  • =도 할당 연산자이기 때문에 x = value라 하면, x에 value를 할당하고, 그 값인 value를 반환한다.

  • 위와 같은 특징을 이용해 다음과 같은 예제도 가능하다.

    let a = 1;
    let b = 2;
    
    let c = 3 - (a = b + 1);
    
    alert( a ); // 3
    alert( c ); // 0
  • b+1a에 할당되고, 할당된 값 3이 그대로 반환되어 3-3을 연산하여, c에 0이 할당된다.

  • 할당 연산자 체이닝

    • let a, b, c;
      
      a = b = c = 2 + 2;
      
      alert( a ); // 4
      alert( b ); // 4
      alert( c ); // 4
    • 위의 특징을 이용해서, 할당 연산자 체이닝이 가능하지만, 가독성이 좋지 않으므로, 추천하지 않는 방식이다.

3.5 복합 할당 연산자

  • 복합할당 연산자는 짧은 문법으로 연산을 하고 싶을때 쓰인다.
  • +=,/=,*= 등을 쓸 수 있다.
  • 복합할당 연산자의 우선순위는 할당 연산자와 동일 하므로, 다른 연산자가 실행된 후 복합할당 연산자가 실행된다.
let n = 2;

n *= 3 + 5;

alert( n ); // 16  (*=의 우측이 먼저 평가되므로, 위 식은 n *= 8과 동일합니다.)

3.6 증가 감소 연산자

  • 증가/ 감소연산자는 변수에만 쓸 수 있다.

  • 숫자를 하나 늘리거나 줄이는 것에 자주 사용되는 연산자.

  • 종류에는 후위, 전위 연산자가 있는데, 위치에 따라 반환되는 값이 다르다.

  • 기본적으로 같은 연산을 하지만 전위 연산자 같은 경우, 먼저 증가/감소 연산을 한뒤, 그 값을 반환을 해준다.

  • 후위 연산자같은 경우, 원래의 값을 반환을 한뒤, 증가/감소 연산을 해준다.

    let counter = 1;
    let a = ++counter; // (*)
    
    alert(a); // 2
    
    let counter = 1;
    let a = counter++; // (*) ++counter를 counter++로 바꿈
    
    alert(a); // 1

3.7 비트 연산자

  • 32비트 정수로 변환하여, 이진 연산을 수행하는 연산자이다.
  • AND &
  • OR |
  • XOR ^
  • NOT ~
  • 왼쪽 쉬프트 <<
  • 오른쪽 쉬프트 >>
  • 부호 없는 오른쪽 시프트 >>>

3.8 쉼표 연산자

  • 쉼표 연산자는 자주 쓰이지는 않지만, 알아두면 좋은 연산자.
  • 기본적으로 할당 연산자 인 =보다 낮으므로, 연산을 할때 주의해야한다.
  • 왼쪽부터, 오른쪽으로 점차 평가하면서, 가장 오른쪽에 있는 값을 반환해준다.

2일차 소감

  • 오랜만의 공부이면서, 가장 기초적인 것을 복습하는 느낌이다.
  • 보통 감으로 예측했던 이항연산자에서의 +의 작동방식이나, 이항연산자에서 +을 제외한 나머지 연산자의 작동방식에 대해서 다시 공부한 느낌이다.
  • 일단 이번주 목표는 6-11까지 끝내는게 목표이다. 좀 더 속도를 높여야겠다.

출처 : 모던 자바스크립트 튜토리얼

'프로그래밍언어 > Javascript' 카테고리의 다른 글

자바스크립트 공부 3일차  (0) 2021.02.26
자바스크립트 공부 1일차  (0) 2021.02.19
자바스크립트 공부 스타트  (0) 2021.02.19

1일차 자바스크립트 스터디

1. 코드 구조

  • 줄바꿈시 암시적으로 세미콜론으로 해석한다 이걸 세미콜론 자동삽입이라 한다.
    • automatic semicolon insertion
    • 그러나 항상 줄바꿈이 세미콜론을 의미하지 않는다. 그 예로 연산자 뒤에 줄바꿈을 할 시, 세미콜론이 필요로 하지 않는 불안전환 표현식으로 판단해서, 세미콜론을 추가하지 않는다.
    • 대괄호 같은 곳 앞에 세미콜론를 생략할시, 에러가 발생하는데, 대괄호 앞에 세미콜론이 있다고 가정하지 않기 때문이다.
    • 그러므로 줄바꿈으로 문을 나눴더라도 세미콜론 삽입을 추천한다.

2. 엄격모드

  • "use strict" 자바스크립트 파일 최상단에 다음과 같이 선언을 하면 엄격모드가 실행된다.

    • 최상단에 위치 시키지 않으면 엄격모드가 실행되지 않는다.

    • 한번 엄격모드를 실행하면, 취소할 방법은 없다.

    • 브라우저가 오래되서 엄격모드를 실행하지 못할 시 래퍼로 감싸면 된다.

      function(){
          'use strict'
      }

3. 변수와 상수

3.1 변수

  • 변수(Variable)을 선언하는데에는 여러가지 방법이 있다.

    let message;
    message = 'hello';
    let message = 'user',
        age = '28',
        name = 'mmm';
  • 변수는 동일한 변수명으로 여러번 선언하지 못한다.

  • 병수 명명 규칙

    • 변수명에는 오직 문자와 숫자 그리고 기호 $_만 들어갈수 있다.
    • 첫글자는 숫자가 될수 없다.
  • 카멜 표기법을 사용한다.

  • 대소문자가 구별되고, 예약어는 선언할 수 없다.

  • 엄격모드가 없을시 let을 안해도 변수가 할당된다. 하지만 권장하지 않는다.

3.2 상수

  • 상수는 변화하지 않는 변수를 선언할떄 쓰인다.
  • const로 선언한다.
  • 상수로 선언할 경우 재할당 할 수 없으므로, 상수를 변경하다보면 에러가 발생한다.
  • 중요한 값들이나, 하드코딩한 값들의 별칭을 기억하기 쉽게 할려고 대문자로 선언한다.

3.3 바람직한 변수명

  • 변수명은 간결하고 명확해야한다.
  • 변수를 읽고 해당 변수가 어떠한 기능을 하는지 최대한 서술된 변수명을 사용하자
  • User 같이 단순한 User가 아니라 newUser oldUser와 같이 명시적으로 어떤 유저인지 구분이 가능하도록 변수를 선언하도록 하자.

4. 자료형

  • 자바스크릅티는 8가지 기본 자료형이 있다.
  • 자바스크립트는 자료의 타입은 있지만 변수에 저장되는 값의 타입이 언제든지 바뀔수 있다.
  • 위와 같은 특징을 가진 언어를 동적 타입 언어라고 한다.

4.1 숫자형

  • 숫자형은 정수와 부동소수점 숫자를 나타내며, Infinity,-Infinity,NaN와 같은 특수 숫자값 도 있다.
  • NaN은 계산 중에 에러가 발생했다는 것을 나타내주는 값으로, 부정확하거나 정의되지 않은 수학연산을 사용할때 나온다.
  • NaN값은 쉽게 변하지 않으므로, 뒤의 연산에도 영향을 끼쳐 NaN이 반환되는 경우가 많다.

4.2 BigInt

  • BigInt는 (2^53-1)보다 크거나 -(2^53-1)보다 작은 숫자형을 사용해야할 경우 쓰인다.

  • 쓰는방법은 정수리터럴 끝에 n을 추가해주면 된다.

    let bigInt = '1231486192486846198249812649819845734961093759123648789n'

4.3 문자형

  • 자바스크립트에서는 문자열을 따옴표로 묶을수 있는데, 총 세종류가 있다.
  • 작은따옴표('') 와 큰 따옴표("")는 일반적인 상황에서 사용된다.
  • 백틱 같은 경우 ${...}를 중간에 넣어주면, 변수나 표현식을 문자열 중간에 넣을수 있다.

4.4 불린형

  • 논리 타입은 truefalse를 나타낸다.

4.5 null 값

  • 보통 다른언어에서는 존재하지 않는 객체의 참조를 나타낼때 많이 쓰지만, 자바스크립트에서는 존재하지 않거나 비어있거나 알수 없는 값일때 사용한다.

4.6 undefined 값

  • 변수를 선언했지만 해당 변수에 값을 할당되지 않았을 때 자동으로 할당되는 값이다.
  • null과 비슷하지만, 변수가 비어있거나 알수 없는 상태를 나타낼때에는 null을 쓰고, undefined는 할당되지 않은 변수의 초기값에 쓰이게 두도록하자

4.7 객체와 심볼

  • 객체형은 다른 자료형과 달리 데이터 컬렉션이나 복잡한 개체를 표현할때 쓰인다.
  • 심볼형은 객체의 고유한 식별자를 만들때 사용된다.

4.8 typeof 연산자

  • 인수의 자료형을 반환하는데, 두가지 형태를 지원한다.

    typeof x
    typeof(x)
  • 두 형태다 결과가 동일하고, 인수의 자료형을 반환해준다.

    • 주의해야할 점
      • null 같은 경우 별도의 고유한 자료형을 가진 값이지만, 객체로 반환된다. 실제로 객체가 아니지만, 하위 호환성을 유지하기 위해서 유지되는 오류이므로 유의해야한다.
    • typeof의 인수가 함수이면 function을 반환한다.

1일차 소감

  • 기본자료형 중 null 값이 typeof시 objects를 반환하는지 몰랐다. BigInt형은 처음보았따.
  • 기초지만 하나하나 다시 공부해봐야겠다.

출처 : 모던 자바스크립트 튜토리얼

'프로그래밍언어 > Javascript' 카테고리의 다른 글

자바스크립트 공부 3일차  (0) 2021.02.26
자바스크립트 공부 2일차  (0) 2021.02.24
자바스크립트 공부 스타트  (0) 2021.02.19

+ Recent posts