기본 용어

  • clear - 현재 창을 깨끗히 비운다.
  • pwd - 현재 경로 출력
  • tree - 현재 디렉토리에 폴더와 파일 구성이 그 밑에 밑에 까지 상세하게 나옴
  • tree -d -디렉토리만 나옴
    • tree 관련 명령어를 쓰기위해 따로 api를 다운받아야함
  • cd 경로 - 해당 경로로 이동
  • ls -현재 디렉토리 파일 목록 출력
  • ls -l - 자세히 출력 -생성시간이나 계정등
  • ls -al - 위에 덧붙여 숨김파일도 출력
  • cp 복사할파일명 복사된파일/디렉토리명 - 현재 디렉토리에 해당 파일/디렉토리명으로 복사본을 만든다.
  • mv 이동할파일/디렉토리명 디렉토리명(상대경로) - 해당파일/디렉토리를 해당디렉토리로 이동시킨다.ex) mv readme.md ./move ***상대경로에서 ./는 현재경로, ../는 하나상위경로 ex) mv ./move ex) mv .. ex) mv ../../
  • mkdir/ rmdir 폴더명 - 디렉토리 생성 및 제거
    • 제거의 경우 안에 파일이나 폴더가 존재하며, 비어있지 않을 경우 실행되지 않는다.이경우 rm -rf로 해야함
  • touch 파일명 - 파일 생성
  • rm -r 폴더/디렉토리명 - 하위 디렉토리까지 다 삭제
  • rm -rf 폴더/디렉토리명 - 디렉토리/파일 제거 - 휴지통에 안가고 즉시 삭제됨
    • 권한여부 상관없이 삭제하기에 강력함
  • chmod - 파일/디렉토리 권한 설정

git 관련 명령어

git - version control system(vcs) -> 코드 버전관리

  1. 수정할때마다 파일을 새로 만들면 관리가 힘들기에
  1. 언제딘 이전 버전의 코드로 돌아갈 수 있기 때문에
  1. 이력을 남기기 위해
  1. 하나의 프로젝트를 두고 여러명의 개발자들이 협업할 수 있기 때문에 - 블록체인 개념 --> 초기상태에서 커밋커밋 반복하면서 변경사항을 계속 저장하면서, 최종상태를 열려면 이러한 변경사항들을 하나하나 적용시켜나가면서 볼 수 있게 된다.
  2. git init - 해당 폴더를 깃 프로젝트로 바꾼다. 또 깃프로젝트로 되있으면 내부를 초기화시킨다
  • git log - commit된 이력을 출력한다. -> 위로 갈수록 최신버전, 또한 내부폴더마다 로그는 각자적용
  • git status - 현재 상태 출력(준비상태 확인) - 내부폴더마다 상채 각자 적용
  • git add 파일명- 커밋하기전 준비상태로 바꾸는것 -> git add .이라고 쓰면 현재경로 내부에 있는 새로운 파일이나 바뀐파일 전부를 준비상태로바꾼다. ->git add를 한 이후에 status를 하면 changes to be committed에 해당 파일이 추가되있음
  • git commit -m "메시지"(""필수) -> 위에 add하고 git commit -m 메시지(커밋할때 버전명같은 개념) -> 하고 git log를 하면 commit 하나가 메시지명으로 추가된 것을 확인 가능
  • git remote add origin “레포지토리주소” -> 원격으로 해당 주소 github에 연결한다.
  • git push -u origin main또는 git push origin(클라우드명) main(브랜치명)
  • git clone 가져올 레포지토리 주소 ->clone할때 자동으로 그 레포지토리 주소로 remote되고 깃프로젝트로 해당 폴더가 변경되기에 따로 reomote할필요가 없다.->remote가 어디로 됬는지 확인할때는 git remote -v ->git clone -b {branch_name} --single-branch {저장소 URL} --> 브랜치만 가져올때
  • git checkout -b 브랜치명 -> 작업후 add commit하고 브랜치만듬
  • git push origin 브랜치명 -> main이 아닌 방금만든 브랜치로 push됨
최종정리 - init으로 깃프로젝트로 바꾸고 파일을 추가하거나 수정하고 gia add .으로 준비상태만들고 commit 메시지명으로 해서 계속 버전이 쌓이는 방식

'Monthly I Learned > 2022.08' 카테고리의 다른 글

8/11 - CORS와 구조분해할당  (0) 2022.08.11
8/10 - http  (0) 2022.08.11
8/6 - API와 Node.js  (0) 2022.08.08
8/5 - 상수, mock 데이터, fetch함수  (0) 2022.08.08
8/4 코드 컨벤션과 preventDefault, classList 메소드  (0) 2022.08.08

array

  • array생성은 변수 = []말고 Array(텍스트,텍스트로)로 가능

array.forEach()

주어진 함수를 배열 요소 각각에 대해 실행한다.

undefined을 반환하여 메소드 체인의 중간에 사용할 수 없다. 단순히 반복문을 대체하기 위한 함수라고 생각하면 된다.

const arr1 = ['a', 'b', 'c']; 
arr1.forEach(element => console.log(element)); // "a"// "b"// "c"

for문을 forEach()로 바꿔보기

// for문const items = ['item1', 'item2', 'item3']; 
const copy = []; 
for (let i=0; i<items.length; i++) {   
	copy.push(items[i]); 
}
// forEach()const items = ['item1', 'item2', 'item3']; 
const copy = []; 
items.forEach(function(item){   
	copy.push(item); 
});

array.map()

배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.

const arr = [1, 4, 9, 16]; 
const map = arr.map(x => x * 2);// 요소에 2를 곱한 값을 반환
console.log(map);//[2, 8, 18, 32]

forEach()와 map()의 차이점

메소드만 다르게 똑같은 형태로 코드를 작성해도 반환값이 다르기 때문에 다른 결과가 나온다.

forEach는 undefined를 반환하고 map은 새로운 배열을 반환한다.

const arr = [1, 4, 9, 16]; 
const map = arr.map(item => item * 2); 
console.log(map);//[2, 8, 18, 32]
const forEach = arr.forEach((item) => item * 2); 
console.log(forEach);// undefined

Array.from()

유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 Array 객체를 만든다.

새로운 Array 인스턴스를 반환한다.

// String에서 배열 만들기
Array.from('foo');
// ["f", "o", "o"]

// Set에서 배열 만들기
const s = new Set(['foo', window]); 
Array.from(s);
// ["foo", window]

// Map에서 배열 만들기
const m = new Map([[1, 2], [2, 4], [4, 8]]);

// *Map 객체 : 키-값 쌍의 모음Array.from(m)// [[1, 2], [2, 4], [4, 8]]
// Array.from과 화살표 함수 사용하기

1Array.from({length: 5}, (value, index) => index);
// [0, 1, 2, 3, 4]// 

2Array.from(Array(5), (_, index) => index);
// [0, 1, 2, 3, 4]

1과 2는 같은 내용이다.

1. 배열은 사실 length 라는 속성을 가진 object이므로 반대로 object에 length속성을 넣어주게 되면 유사 배열로 인식되기 때문에 {length: 5}가 length가 5인 배열로 인식하여 작동한다. 하지만 length속성을 추가한 object가 배열과 같다는 이야기는 아니다. Array에는 배열로 동작하기위한 다른 메소드들이 담겨 있기 때문이다.

2. 불필요한 인자의 공간을 채우기 위한 용도로 맵핑 함수의 첫 번째 인자로 언더스코어(_) 를 사용할 수 있다.


array.filter()

주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환한다.

어떤 요소도 테스트를 통과하지 못했으면 빈 배열을 반환한다.

// 6글자 이상인 요소만 남기기
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']; 
const result = words.filter(word => word.length > 6); 
console.log(result);
// ["exuberant", "destruction", "present"]
// 값이 10이하인 요소 제거하기
function isBigEnough(value) {   
	return value >= 10; 
} 

let filtered = [12, 5, 8, 130, 44].filter(isBigEnough); 
// filtered는 [12, 130, 44]

array.find()

주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환한다.

그런 요소가 없다면 undefined를 반환한다.

원하는 데이터가 있는지 확인할 때 => 요소가 있다면 바로 배열을 빠져나오기 때문에 filter보다 빠르다.

// 10보다 큰 값이 있는지 확인하기
const arr = [5, 12, 8, 130, 44]; 
const found = arr.find(element => element > 10); 
console.log(found); // 12
// 객체로 이루어진 배열에서 name의 값이 'cherries'가 있는지 확인하기
const inventory = [   
    {name: 'apples', quantity: 2},   
    {name: 'bananas', quantity: 0},   
    {name: 'cherries', quantity: 5} 
]; 
const result = inventory.find(fruit => fruit.name === 'cherries'); 
console.log(result)// { name: 'cherries', quantity: 5 }

array.every()

배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트한다. (&&같은 개념이라고 생각하면 될 것 같다.)

Boolean 값을 반환하고 빈 배열에 호출하면 무조건 true를 반환한다.

// 모든 요소가 10보다 크거나 같은지 확인하기
function isBigEnough(element) {   
    return element >= 10; 
} 
[12, 5, 8, 130, 44].every(isBigEnough);// false 
[12, 54, 18, 130, 44].every(isBigEnough);// true
const user = [{name: '짱구', age: 10}, {name: '철수', age: 10}, {name: '흰둥이', age: 2}] 

// 모든 유저의 나이가 5살보다 큰지 확인하기
console.log(user.every((item)=> item.age>5));// false

// 모든 유저의 나이가 1살보다 큰지 확인하기
console.log(user.every((item)=> item.age>1));// true

array.some()

배열 안의 어떤 요소라도 주어진 판별 함수를 통과하는지 테스트한다.

어떤 배열 요소라도 대해 참인(truthy) 값을 반환하는 경우 true, 그 외엔 false를 반환한다. 빈 배열에서 호출하면 무조건 false를 반환한다. (||같은 개념이라고 생각하면 될 것 같다.)

// 10보다 크거나 같은 요소가 있는지 확인하기
function isBiggerThan10(element) {   
	return element >= 10; 
} 

[2, 5, 8, 1, 4].some(isBiggerThan10);// false 
[12, 5, 8, 1, 4].some(isBiggerThan10);// true
const user = [{name: '짱구', age: 10}, {name: '철수', age: 10}, {name: '흰둥이', age: 2}] 

// 5살보다 나이가 많은 유저가 있는지 확인하기
console.log(user.some((item)=> item.age>5));// true

// 1살보다 나이가 많은 유저가 있는지 확인하기
console.log(user.some((item)=> item.age>1));// true
// checkAvailability함수의 2번째 인자로 넣은 과일이 fruits에 있는지 확인하기
let fruits = ['apple', 'banana', 'mango', 'guava']; 
function checkAvailability(arr, val) {   
    return arr.some(arrVal => val === arrVal); 
} 

checkAvailability(fruits, 'grape');//false 
checkAvailability(fruits, 'banana');//true

array.sort()

배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다. 복사본이 만들어지는 것이 아닌 원본 배열이 정렬된다.

정렬 속도와 복잡도는 각 구현방식에 따라 다를 수 있다. 기본적으로 오름차순으로 정렬되며 배열 요소를 문자열로 캐스팅하고 변환된 문자열을 비교하여 순서를 결정한다. undefined는 문자열로 변환되지 않아 맨 끝으로 정렬 된다.

arr.sort([compareFunction]) 
// compareFunction: 정렬 순서를 정의하는 함수,
// 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬

sort()를 사용하면 오름차순으로 정렬되는데 숫자의 경우 크기가 아니라 한자리씩 비교되어 100000이 21보다 앞에 오게 된다. (사전을 검색하는 방식처럼 정렬된다고 생각하면 될 것 같다.)

const months = ['March', 'Jan', 'Feb', 'Dec']; 
months.sort(); 
console.log(months);// ["Dec", "Feb", "Jan", "March"]

const nums = [1, 30, 4, 21, 100000]; 
nums.sort(); 
console.log(nums);// [1, 100000, 21, 30, 4]
// compare 함수의 형식
function compare(a, b) {   
    if (a > b) {     
        return -1;// b가 앞에 옴  
    }   
    if (a < b) {     
        return 1;// a가 앞에 옴 // a === breturn 0;// 정렬 유지 
    } 
}

숫자 정렬

// 오름차순 정렬
let numbers = [4, 2, 5, 1, 3]; 
numbers.sort(function(a, b) {   
    return a - b; 
}); 
console.log(numbers);// [1, 2, 3, 4, 5]

// 내림차순 정렬
let numbers = [4, 2, 5, 1, 3]; 
numbers.sort(function(a, b) {   
	return b - a; 
}); 
console.log(numbers);// [5, 4, 3, 2, 1]

문자 정렬

// 오름차순 정렬
let string = ["BA", "BB","AA", "AB", "CB", "CA"]; 
string.sort(); 
console.log(string);// ["AA","AB","BA","BB","CA","CB"]

// 내림차순 정렬 - 문자열은 숫자 정렬처럼 하면 정상적으로 정렬이 되지않아 비교 연산자를 사용해야함 
string.sort(function compare(a, b) {   
return a == b ? 0 : a > b ? -1 : 1;

array.reverse()

배열의 순서를 반전하며 원본 배열을 변형한다.

const a = [1, 2, 3]; 
console.log(a);// [1, 2, 3]  

a.reverse(); 
console.log(a);// [3, 2, 1]

 

array.slice()

어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환한다. 원본 배열은 바뀌지 않는다.

arr.slice([begin[, end]]) 
// begin: 반환할 배열의 시작인덱스
// end: end인덱스 앞까지, end가 생략되면 배열의 끝까지 추출
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];  

console.log(animals.slice()); // ["ant", "bison", "camel", "duck", "elephant"]
// 비워두면 전체를 반환

console.log(animals.slice(2));// ["camel", "duck", "elephant"]
// 2번인덱스부터 끝까지console.log(animals.slice(-2));// ["duck", "elephant"]
// 음수: 뒤에서 부터 => 뒤부터 요소 2개만

console.log(animals.slice(100));
// []// 배열의 길이와 같거나 큰 수 => 빈 배열

console.log(animals.slice(2, 4));// ["camel", "duck"]
// 2번 인덱스부터 4번 인덱스 앞(3번 인덱스)까지

console.log(animals.slice(1, 5));// ["bison", "camel", "duck", "elephant"]
// 1번 인덱스부터 5번 인덱스 앞(4번 인덱스)까지

console.log(animals.slice(2, -1));// ["camel", "duck"]
// 2번 인덱스부터 뒤에서 1개 요소를 빼고 까지

console.log(animals.slice(2, 100));// ['camel', 'duck', 'elephant']
// 배열의 길이와 같거나 큰 수 => 배열 끝까지

array.splice()

배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다. 원본 배열이 변경되고 제거한 요소를 담은 배열을 반환한다.

array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) 
// start: 배열의 변경을 시작할 인덱스
// deleteCount: 배열에서 제거할 요소의 수(생략하거나 배열길이보다 길면 start부터 모두 제거, 0이나 음수면 아무것도 제거하지 않지만 추가할 요소를 지정해야함)
// item: 배열에 추가할 요소, 지정하지 않으면 요소를 제거만 함
const months = ['Jan', 'March', 'April', 'June']; 

months.splice(1, 0, 'Feb');
//  1번 인덱스에 아무것도 지우지 않고 'Feb'를 추가함
console.log(months);// ["Jan", "Feb", "March", "April", "June"]
// 원본 배열을 변경하기 때문에 months는 ["Jan", "Feb", "March", "April", "June"]가 됨 

months.splice(4, 1, 'May');
// 4번 인덱스부터 1개를 지우고 'May'를 추가함
console.log(months);// ["Jan", "Feb", "March", "April", "May"]

start가 음수인 경우 배열의 끝에서부터 요소를 세어나간다.

즉 -n이면 요소 끝의 n번째 요소를 가리키며 array.length - n번째 인덱스와 같다.

(예제의 -2는 myFist배열의 끝의 2번째 요소인 'mandarin'을 가리키며 4 - 2 = > 2번째 인덱스와 같다.)

let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; 
let removed = myFish.splice(-2, 1);// (2, 1)과 동일

// splice를 한 원본 배열은 제거하고 남은 것들을 반환
console.log(myFish)// myFish = ["angel", "clown", "sturgeon"]

// 원본 배열을 splice한 건 제거한 것들을 반환
console.log(removed)// removed = ['mandarin']

slice()와 splice()의 차이점

slice()는 원본 배열을 변경하지 않으며 새로운 배열을 반환한다.

const color = ['red', 'black', 'white','pink','blue']; 

let slice = color.slice(1, 2); 
console.log(color)// ['red', 'black', 'white', 'pink', 'blue'] 

color.slice(1, 2); console.log(color);// ['red', 'black', 'white', 'pink', 'blue']
console.log(slice);// ['black']

splice()는 원본 배열을 변경하며 제거한 요소의 배열을 반환한다.

const color = ['red', 'black', 'white','pink','blue']; 

let splice = color.splice(1, 2); 
console.log(color);// ['red', 'pink', 'blue'] 

color.splice(1, 2); 
console.log(color);// ['red']
console.log(splice);// ['black', 'white']

'Monthly I Learned > 2022.07' 카테고리의 다른 글

7/26 날짜 메소드와 백틱(``)  (0) 2022.08.02
7/24 객체와 고차함수  (0) 2022.08.02
7/18 for문과 객체  (0) 2022.08.02
7/16 변수와 상수, 데이터 타입  (0) 2022.08.02
7/14 Position과 Image Sprite  (0) 2022.08.02

 

날짜 가져오기

년도 가져오기 
let rightNow = new Date(); 
let year = rightNow.getFullYear(); 
let month = rightNow.getMonth()+1; 
let date = rightNow.getDate(); 
let day = rightNow.getDay(); -->> 요일을 숫자로 반환 
let currentHour = rightNow.getHours(); 
let currentMin = rightNow.getMinutes();
let time = rightNow.getTime(); -->>1970년 1월 1일로부터 몇 밀리초가 지났는지 계산해서 리턴함

백틱(``)

  • ES6 에서 추가된 문법

template literal

굳이 +로 연결필요없이 아래처럼 ${변수}쓰면 혼용가능 
ageDetector = (age_string) => { 	
    const newAge = Number(age_string) 	
    const limitAge = 65-newAge 	
    return 앞으로 ${limitAge}년 남으셨습니다 
}

개행 문자

let detail = '자세히\n'+'보아야\n'+'이쁘다'; 
-->>그런데 es6에서는 그냥 엔터치고 아래다 쓰면 알아서 개행해준다.

계산식

alert(`1 + 2 = ${sum(1, 2)}.`); 
 -> 이런것도 안에 다 계산해주고 문자열로 포함시켜준다. 
alert( `I'm the Walrus! `); 
 -> 안에 '도 문자열로 표현할려면 원래는 \'해야했지만 그냥 가능
ES6에서 추가된 몇 가지 유용한 string method 
startsWith(텍스트) -> 시작이 해당 텍스트인지 true/false 
endsWith(텍스트) -> 끝이 해당 텍스트인지 true/false 
includes(텍스트) -> 해당 텍스트가 포함되었는지 true/false
let xxx = 문자열.repeat(숫자) -> 해당 텍스트 숫자만큼 반복

'Monthly I Learned > 2022.07' 카테고리의 다른 글

7/20 Array  (0) 2022.08.02
7/24 객체와 고차함수  (0) 2022.08.02
7/18 for문과 객체  (0) 2022.08.02
7/16 변수와 상수, 데이터 타입  (0) 2022.08.02
7/14 Position과 Image Sprite  (0) 2022.08.02

숫자와 문자열 타입 변환

 
숫자로

- Number('') parseInt("1.901"); parseFloat("1.901");

 
문자열로 문자열.tostring(); String('')
 
- 숫자.tofixed(숫자) -> 괄호숫자만큼 소수점을 남김 안쓰면 소수 안남

고차함수

const f1 = function() { return "hello"}; 
const f2 = ()=> "hello"; //function 생략 
const f3 = function(name) { return hello ${name}}; 
const f4 = name => hello ${name}; //return 생략, function, () ,{ } 생략 
const f5 = function(a,b) { return a+b}; 
const f6 = (a,b) => a+b; // function 생략 , return생략,() ,{ } 생략 
-->> 6개 모두 같은 의미 
-->> people과 name은 매개변수라는게 중요한 포인트

객체

객체 기본형 let myself = { name : 'lee' }
 
1. 객체에서 key값으로 value불러올때 key값이 없으면 undefined 이고 또한 .key말고 그냥 배열[]로 value를 불러오는것도 가능
 
2. dot notation과 bracket notation —> 앞에것은 일반적으로 객체에서 key값으로 value를 불러오는 것이고 뒤에것은 key값에 띄어쓰기가 적용될경우 dot으로 불러올 수 없기에 []배열 형태로 안에 key값을 텍스트로 넣고 불러와야한다. --> 배열로 불러올때는 []안의 ''는 필수
 
3. let result = Object.keys() -> 객체의 key값들을 배열로 변수에 담음 let result = Object.values() -> 객체의 value값들을 배열로 변수에 담음
 
4. 그리고 객체의 key를 추가할때는 그냥 push나 이런거 쓸필요 없이 dot notation으로 새로운 걸 적어주면 자동으로 추가된다.
 
5.객체에서 key값 삭제할때 delete 객체명.key값;

         6.객체는 이터레이터를 상속받지 못했기에 for of 사용 불가

         7. key는 property name이라고도 하며, value는 property value라고도 말합니다.

날짜 가져오기

년도 가져오기 
let rightNow = new Date(); 
let year = rightNow.getFullYear(); 
let month = rightNow.getMonth()+1; 
let date = rightNow.getDate();
let day = rightNow.getDay(); -->.> 요일을 숫자로 반환 
let currentHour = rightNow.getHours(); 
let currentMin = rightNow.getMinutes();
let time = rightNow.getTime(); -->>1970년 1월 1일로부터 몇 밀리초가 지났는지 계산해서 리턴함

 

'Monthly I Learned > 2022.07' 카테고리의 다른 글

7/20 Array  (0) 2022.08.02
7/26 날짜 메소드와 백틱(``)  (0) 2022.08.02
7/18 for문과 객체  (0) 2022.08.02
7/16 변수와 상수, 데이터 타입  (0) 2022.08.02
7/14 Position과 Image Sprite  (0) 2022.08.02

for문

//1. for 기본형 for(let i=1; i<10; i++) {    document.write(i + " "); }
//2. for - in문 

//배열 
for(let i in arr) {
	document.write(i + " "); } 
}

//객체 
for(let key in obj){   
	document.write(key + " "); 
}
//3. for - of문(객체 사용 불가) 
for(let val of arr){
	document.write(val + " "); 
}
//4. foreach 
[10, 20, 30].forEach((value, index, array)=>{     
	console.log(${index} : ${value}); 
})
for문에서 2이상씩 더할때 
for(let i=0; i<=30; i+=2){ 	
	result.push(i); 
}

dom 객체

문서 객체 모델(DOM, Document Object Model)은 XML이나 HTML 문서에 접근하기 위한 일종의 인터페이스입니다. 즉, 자바스크립트는 돔객체를 통해 html문서에 접근한다

이 객체 모델은 문서 내의 모든 요소를 정의하고, 각각의 요소에 접근하는 방법을 제공합니다.

document.getElementsByTagName('') 
-> 해당 태그내용을 배열로 가져옴 
document.getElementsByClassName('')
->위의 클래스 버전 
document.getElementById('')
->위에 아이디버전인데 아이디는 고유의값이기에 배열이 아니고 하나만존재 
document.querySelector('')
->는 ''안에 css선택자를 적어 배열이 아닌 첫번째 값만 가져옴 
document.body.innerHTML = '내용 다 바꿈';
body이외에 기본 조작 형태는 아래 // id가 'NM_NEWSSTAND_HEADER'인 요소 취득 >> 변수에 저장 
const element = document.getElementById('NM_NEWSSTAND_HEADER');
// 해당 요소의 스타일 조작 
element.style.backgroundColor = 'blue';
요소생성후 안의 기존요소 제거 후 변경 
const item = document.createElement('h1') item.innerHTML = '제목추가' 
--> innerHTML과 innertext의 차이는 안의 내용을 html형식으로 이해하냐 단순 텍스트로만 이해해서  
받아오냐의 차이이다.
const newsHeader = document.getElementById('NM_NEWSSTAND_HEADER'); 
newsHeader.appendChild(item); 
->자식으로 위에서 만든 요소 추가
// 요소에 id 수정(추가) 
element.id = 'newId';
// 요소에 class 수정(추가) 
element.className = 'newClass';
// 요소 스타일 수정(추가) 
element.style.backgroundColor = "red";
이벤트기본형 
checkDateBtn.addEventListener('click', function() { 	
showDate.innerText = new Date(); 
// showDate 요소의 내용 >>> 현재 날짜 출력 });
'click'은 어떤 이벤트로 할지, 
checkDateBtn는 이벤트를 실행할 어떠한 요소, 
showDate는 checkDateBtn로 실행될 실제 효과
document.getElementById('ex').className 
-->클래스이름 설정또는 가져오기
const hero_left = Number( 	
	getComputedStyle(heroElement).left.split("px", 1)[0] 
);
const ghostElement = document.createElement("div");
element.style과 getcomputedstyle의 차이는 
앞에는 실제 html파일안의 태그안 즉 인라인 속성만 불러 올 수 있고
computed는 다가능 간단히 말해서 앞에는 style을 변경하기위한 메소드고 뒤에는 단순히 읽어오기위한 읽기전용
loginButton.addEventListener('click', login); login()가 아닌 login
append는 ()안에 모든 요소 다 가능이고 appendchild는 노드만 가능 즉, 돔객체

setinterval과 settimeout

let setInterval = setInterval(function () { 	
	document.body.innerHTML += "Hello" 
}, 1000); 
-->1000이 흐를때마다 함수를 계속 반복 실행 
-->실행중 다른 setInterval로 인해 함수가 호출되면 기존에 실행되던 함수는 종료된다
let setTimeout = setTimeout(function () { 	
	alert("안녕하세요!");	 
}, 5000); 
--> 5000흐른 후 한번만 함수 실행 
--> 실행중 다른 setTimeout로 인해 함수가 호출되도 기존에 실행된 함수에 영향을 주지 않는다.
clearInterval(setInterval혹은setTimeout(변수명)); --> 위에 두 메소드를 종료하기위해 사용한다.
  • 시간은 밀리세컨드 단위(1000이 1초)

'Monthly I Learned > 2022.07' 카테고리의 다른 글

7/26 날짜 메소드와 백틱(``)  (0) 2022.08.02
7/24 객체와 고차함수  (0) 2022.08.02
7/16 변수와 상수, 데이터 타입  (0) 2022.08.02
7/14 Position과 Image Sprite  (0) 2022.08.02
7/13 - Flex box  (0) 2022.07.25

변수와 상수

변수 let은 값을 바꿀 수 있고, (재선언 불가,재할당 가능)

let a  a = 'a' a = 'b'

상수 const는 값을 바꿀 수 없으며 선언할때 값도 할당해줘야 한다. (재선언 불가, 재할당 불가)

const a = 'a' a = 'b' // error

데이터 타입

1. Primitive Type(기본 타입)

Number - 숫자

String - 문자열

Boolean - true, false 두 가지의 값만 가질 수 있음

Undefined - 변수 선언만 하고 값을 할당해주지 않은 상태. let 변수명;

Null - 사용자가 의도적으로 지정한 빈 값. let 변수명 = null ;

NaN - 연산식을 썼을경우 양쪽 중 하나라도 숫자타입이 아닐경우 발생함

  • null vs undefined ?

null은 빈 값(blank)이며, 사용자가 직접 부여한다.

console.log(null == undefiend); // ture 
console.log(null === undefined); /// false  
/* 둘 다 '값이 없음'을 나타내기에 동등연산자로 비교했을 시에는 ture가 나오지만, 
type이 다르기에 일치연산자로 비교했을 시에는 false가 나온다. */  
console.log(typeof null); // object 
console.log(typeof undefined); // undefined

🔊 typeof null의 결과가 object가 나오는 것은 javascript 초기 오류입니다. null은 객체가 아닌 기본타입 입니다! (참조 링크 : https://2ality.com/2013/10/typeof-null.html)

 

2. Reference Type(참조 타입)

Function - 함수

Array - 배열

Object - 객체

기본 타입은 데이터의 실제 값을 할당하지만, 참조타입은 저장된 주소값을 할당한다.

 

symbol

선언방식 const sym3 = Symbol('bar'); -->new로 선언 불가능
  • symbol은 변경 불가능하고 const sym3 = Symbol('bar'); const sym3 = Symbol('bar'); 이렇게 동일한 문자열을 심볼했다해도 ===하면 false가 뜬다 ***주로 심볼은 객체의 프로퍼티 키로 사용된다.
const sym1 = Symbol(); const sym2 = Symbol('foo'); const sym3 = Symbol('foo');
obj[sym1] = 'propertyValue1'; 
obj[sym2] = 'propertyValue2'; 
obj[sym3] = 'propertyValue3';  // no conflict with sym2
{ 
    Symbol(): 'propertyValue1',  
    Symbol(foo): 'propertyValue2',  
    Symbol(foo): 'propertyValue3' 
} 
console.log(obj[sym1]);  // propertyValue1 
console.log(obj[sym2]);  // propertyValue2 
console.log(obj[sym3]);  // propertyValue3

'Monthly I Learned > 2022.07' 카테고리의 다른 글

7/24 객체와 고차함수  (0) 2022.08.02
7/18 for문과 객체  (0) 2022.08.02
7/14 Position과 Image Sprite  (0) 2022.08.02
7/13 - Flex box  (0) 2022.07.25
7/12 - HTML  (0) 2022.07.13

position

  • position: static;
  • position: relative;
  • position: absolute;
  • position: fixed;
  • 이후 top,right,bottom, left를 설정해서 타 블록과의 거리를 조절한다.
  • top,right,bottom, left은 % 사용가능 - %뒤에 그림이 붙기에 마진으로 앞으로 조정가능
  1. absolute -부모 중에 position 속성에 relative, fixed, absolute 하나라도 적용되어 있으면 그 부모의 위치를 기준으로 절대적으로 움직이게 됩니다.(부모가 여러개이기에 그 중 위에 세속성을 가진 것을 기준으로함)
  2. top, right, bottom, left 설정해서 부모안에서 움직인다.
  3. absolute 속성이 부여 되면서 inline element 로 작용하여 내용의 크기만큼 너비가 지정되었습니다. 이렇게 absolute 값을 갖게 되면 내용의 크기만큼 너비가 지정됩니다.

- fixed 브라우저 화면을 기준으로 이동 position: fixed; 속성을 부여하면 요소는 inline 속성을 지니게 됩니다.

image sprite

- 웹에 그림을 여러개 전송하면 네트워크 요청하는데 비용이 많이 들기에 하나의 파일에
여러 그림을 다 몰아넣고 슬라이스하고 포지션을 지정해서 사용하는 방법

'Monthly I Learned > 2022.07' 카테고리의 다른 글

7/18 for문과 객체  (0) 2022.08.02
7/16 변수와 상수, 데이터 타입  (0) 2022.08.02
7/13 - Flex box  (0) 2022.07.25
7/12 - HTML  (0) 2022.07.13
7/11 - 스타트  (0) 2022.07.12

기존 블록을 flex 속성을 가진 컨테이너로 바꾼다.

div {
  display: flex;
}

flex 속성을 가진 컨테이너가 쓸 수 있는 요소

- justify-content, align-content, align-items, align-self, flex-direction, flex-wrap, order

 

1.수평요소

1-1. justify-content

- flex-start: 요소들을 컨테이너의 왼쪽으로 정렬합니다.
  flex-end: 요소들을 컨테이너의 오른쪽으로 정렬합니다.
  center: 요소들을 컨테이너의 가운데로 정렬합니다.
  space-between: 요소들 사이에 동일한 간격을 둡니다.

  - 사이기 때문에 양 사이드 요소들은 컨테이너와의 간격을 따로 두지 않는다.
  space-around: 요소들 주위에 동일한 간격을 둡니다.

  - 요소 주위기 때문에 양 사이드 요소들도 컨테이너와 간격을 둔다.

div {
	display: flex;
	justify-content: space-between;
}

 

2.수직요소

2-1. align-content - 여러줄을 정렬

- flex-start: 요소들을 컨테이너의 꼭대기로 정렬합니다.
  flex-end: 요소들을 컨테이너의 바닥으로 정렬합니다.
  center: 요소들을 컨테이너의 세로선 상의 가운데로 정렬합니다.
  baseline: 요소들을 컨테이너의 시작 위치에 정렬합니다.
  stretch: 요소들을 컨테이너에 맞도록 늘립니다.

2-2. align-items - 한줄 정렬

- flex-start: 요소들을 컨테이너의 꼭대기로 정렬합니다.
  flex-end: 요소들을 컨테이너의 바닥으로 정렬합니다.
  center: 요소들을 컨테이너의 세로선 상의 가운데로 정렬합니다.
  baseline: 요소들을 컨테이너의 시작 위치에 정렬합니다.
  stretch: 요소들을 컨테이너에 맞도록 늘립니다.

 

3. 개인 요소 정렬

 - 개인 요소이기에 위에처럼 부모 태그에 적용시키는 것이 아닌 자식 태그에 적용시키는 것이다.

3-1. align-self - align-items의 자식 버전

- flex-start: 요소를 컨테이너의 꼭대기로 정렬합니다.
  flex-end: 요소를 컨테이너의 바닥으로 정렬합니다.
  center: 요소를 컨테이너의 세로선 상의 가운데로 정렬합니다.
  baseline: 요소를 컨테이너의 시작 위치에 정렬합니다.
  stretch: 요소를 컨테이너에 맞도록 늘립니다.

3-2. order

- 숫자로 표현되며 +면 오른쪽으로 한칸 이동하여 오른쪽 요소와 바뀐다는 의미이다.

- order로 적용되는 요소가 여러개일경우 +는 일괄오른쪽정렬, -는 일괄 왼쪽정렬

 

 

4. 혼합 정렬

4-1. flex-direction

- row: 요소들을 텍스트의 방향과 동일하게 정렬합니다.
  row-reverse: 요소들을 텍스트의 반대 방향으로 정렬합니다.
  column: 요소들을 위에서 아래로 정렬합니다.

  ***column으로 세로 형태가 됬을때 수직 가운데 정렬은 기존이 성격이 수평이기에 justify-content의 center를 사용
  column-reverse: 요소들을 아래에서 위로 정렬합니다.

  ***마찬가지로 기존 성격은 남아있기에 속성을 지정하고 수평, 수직정렬할때는 거꾸로 적용

4-2. flex-wrap

- nowrap: 모든 요소들을 한 줄에 정렬합니다.
  wrap: 요소들을 여러 줄에 걸쳐 정렬합니다.

***여러줄이라는 것은 결국 간격을 넓게 유지시키고 남은 요소를 아래줄로 내린다는 의미이다.
  wrap-reverse: 요소들을 여러 줄에 걸쳐 반대로 정렬합니다.

***반대라는 의미는 수직반대이다.

 

'Monthly I Learned > 2022.07' 카테고리의 다른 글

7/18 for문과 객체  (0) 2022.08.02
7/16 변수와 상수, 데이터 타입  (0) 2022.08.02
7/14 Position과 Image Sprite  (0) 2022.08.02
7/12 - HTML  (0) 2022.07.13
7/11 - 스타트  (0) 2022.07.12

+ Recent posts