본문 바로가기

오늘의 학습

[오늘의 학습] 211220

Javascript

코드 작성 습관 만들기

기존의 배열, 객체 데이터 변경하지 않기

const fruits = ["banana", "apple", "orange", "strawberry"];

// fruits.forEach((item, index) => {
//     fruits[index] = item + '💖';
// });

const fruits2 = fruits.map((item) => {
    return item + '💖'
});

console.log(fruits2);
console.log(fruits);
  • 기존의 배열과 객체 값을 그대로 보존하는 것이 데이터 변화를 추적하는데 용이하다.
  • 기존 배열, 객체 값을 수정해야 한다면 새로운 배열을 만드는 것이 중요하다.
  • 'forEach' 사용 시, fruits의 배열의 각 요소에 '💖'' 모양이 추가된 상태로 변경된다.(기존 배열 변경)
  • 'map'은 새로운 배열을 반환하기 때문에 fruits는 보존되고, fruits2에 변경된 값들이 저장된다.(기존 배열 보존)

 

엄격모드 활용하기

'use strict'; // 엄격 모드, 주석을 적용하여 상태비교

str = "hello strict"; // "Uncaught ReferenceError: str is not defined" 에러발생

var undefined = "undefined"; // "Uncaught TypeError: Cannot assign to read only property 'undefined' of ..." 에러발생
console.log(undefined);

var Infinity = 100; // "Uncaught TypeError: Cannot assign to read only property 'Infinity' of ... " 에러발생
console.log(Infinity);

Math.PI = 0; // "Uncaught TypeError: Cannot assign to read only property 'PI' of ..." 에러발생

function myFunc(a, a, b) { // 엄격모드 적용시,
  console.log(a + a + b);  // "Uncaught SyntaxError: Duplicate parameter name ..."
}                          // 에러발생
myFunc(1, 2, 3);

delete Object.prototype;
// 엄격모드 적용시,
// "Uncaught TypeError: Cannot delete property 'prototype' ... "
// 에러발생

const Name = {
  firstname: "gildong",
  lastname: 'hong'
}
console.log(Name.firstname);
delete Name.firstname;
console.log(Name.firstname);
  • 자바스크립트는 데이터 타입이 굉장히 자유롭기 때문에 엄격모드 설정하지 않으면 마음대로 설정을 바꿀 수 있다.
  • 코드의 양이 방대해졌을 때 엄격모드를 적용하지 않아서 실수가 발생하면 수습하기 힘들기 때문에 사전에 방지한다.

'오늘의 학습' 카테고리의 다른 글

[오늘의학습] 220103  (0) 2022.01.03
[오늘의학습] 211223  (0) 2021.12.23
[오늘의 학습] 211214  (0) 2021.12.15
[오늘의 학습] 211206  (0) 2021.12.06
[오늘의 학습] 211202  (0) 2021.12.02