코딩/자바스크립트

JS / 기초, 변수, 조건문 if

민여 2022. 3. 25. 12:08

공부한 강의 : https://www.youtube.com/watch?v=zN9YVbieTSQ  /오쌤의 니가스터디 (왕초보에게 적합)

https://www.youtube.com/watch?v=KF6t61yuPCY / 코딩앙마 (일반 초보에게 적합)

https://www.youtube.com/watch?v=OCCpGh4ujb8 / 드림코딩 엘리 (어느정도 지식이 필요)

 

 

*완전언어가 아니여도 데이터 출력이 가능한 아이들
alert(); 경고창에 값 표현 
document.write(); body 내부에 값 표현 
console.log(); 콘솔창에 값 표현 
   Ex)   alert('값');  - alert('안녕하세요');     

*태그도 문자열로 쓸수있다  document.write('<br>);

*키워드는 js가 특별한 의미를 담고 있는 예약어이다 그래서 따옴표 내부에 쓰지 않는다. 따옴표 내부에 쓰는건 문자열

*객체 - js가 명령 가능한 모든 대상 

*숫자와 문자를 연결해줄때 ex) 1000 + '원'

*식별자 구별 관례 - 단어 단어 조합일때 첫글자 대문자쓰기 firstBoxValue 이렇게 

*검사창에서도 데이터 유형마다 색을 다르게 표현해줌 

 

*데이터유형 

 

-문자형 / string

const name = "mike"; 
const message = "i'm a boy.";
const message2 = 'i\'m a boy.';
const message3 = `my name is ${name}`;

const message4 = `나는 ${30+1}살 입니다.`;

 

- 숫자형 / number

const age = 30; 
console.log(1 + 2);

 

-불린
const a = true; //boolean
const b = false;

 

이외 함수 객체 undefined 등등은 더 추후에 

 

*변수

var를 쓸거면 재선언 말고 재사용을 써라 
var cup = 'coffee';
var cup = 'tea'; 하지말고 
var cup = 'coffee';
cup = 'tea'; 이렇게 하라는 말 

영원히 바뀌지않는 수가 상수 
변할지도 모르는게 변수 

prompt는 문자열로 값을 반환해서 number(값)이렇게 감싸줘야 
원하는대로 숫자값을 사용 가능함

 

*명시적 형변환을 할수있는 방법 

String() 앞에 s대문자 괄호안에 타입을 문자형으로 바꿔준다 
Number() 숫자형으로 바꿔줌 - 문자가 포함되어있으면 NaN이 됨
boolean은 false 숫자0, 빈문자열'', nul,l undefined, nan
이외에는 true // number(true)하면 1나오고 number(false)
하면 0나오는거랑 연관있다 참고로 number도 앞에 대문자
주의사항! Number(null) // 0
             Number(undefined) //NaN

 

*연산자

==는 동등 연산자이고 ===는 일치 연산자 

const a = 1;
const b = "1";
console.log(a == b); 하면 true라고 나오고 
console.log(a === b); 하면 false라고 나옴 

일치 연산자는 타입 까지 비교해주는것 

 

Number 짚고 넘어갈것

 

Number(null)   // 0 prompt에서 취소누르면 null이 된다 = 0이된다 

Number(undefined) // NaN  

Number(0) //false

Number('0') //true

Number('')//false

Number(' ')//true

숫자 0이나 빈 문자열은 false 

문자 0이나 공백이 들어간 문자열은 true

 

연산자 나머지

홀수: X % 2 = 1

짝수: Y % 2 = 0 

어떤값이 와도 5를 넘기면 안된다면 X % 5 = 0~4 사이의 값만 반환

 

거듭제곱 ** const num = 2**3;     //=8

 

문자열에 변수 넣을때 

const name = 'mike';

const message = `my name is ${name}`; 

=백틱과 달러 중괄호로 변수 나타내기 

 

*조건문 if 

{}는 코드블록, 여러줄쓸때 


if(조건식){참표현식;}다음표현식; = 제어문 

else if 를 써서 조건식 2를 만들수 있다

논리곱연산자 && - 둘중 하나만 false여도 false 
논리합연산자 || - 둘중 하나만 true여도 true 
부정연산자 ! - true인 값 앞에 !를 붙이면 false로 반환 
                    원래 논리의 반대로 반환하는것 

함수 confirm - 확인(true)/취소(false)를 띄우는 함수
 
내가 취소를 누르면 취소되었습니다를 띄우고 싶은데 
if(변수명){}
else{alert('취소되었습니다.')}; 이렇게 하면 비효율적이니까 
이때 부정연산자
if(!q){alert('취소되었습니다.')}; 이렇게 사용 

and가 우선순위가 높다 그래서 묶어줘야함 

const gender = 'F';
const name = 'jane';
const isAdult = true;

if(gender === 'M' && (name === 'mike' || isAdult)){
  console.log('통과')
} else{
  console.log('돌아가')
}

 

 

변수는 let const    ( es6부터 ) 

이전에는 var 

 

var 와 let은 비슷한데

var는 한번 선언된 변수를 다시 선언할 수 있고 선언하기 전에 사용할수도 있다. 

var로 선언한 모든 변수는 최상위로 끌어올린거처럼 동작 = 호이스팅 

그런데 선언은 호이스팅되지만 할당한 값은 호이스팅 되지 않기때문에 undefined가 뜬다 

 

let과 const도 호이스팅은 되지만 

이 호이스팅의 뜻이 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것 처럼 행동된다는 말 

 

이 let 과 const는 tdz temporal dead zone이 있음

할당을 하기전까지 사용할수없음 

 

let age = 30;

function showAge(){

   console.log(age);

    let age = 20;                //이 부분땜에 에러가 난다

}

 

변수는 선언 초기화 할당 3단계를 거쳐야함 

 

const는 선언과 할당이 동시에 일어나야한다 

 

let과 const는 블록스코프 =  코드블록내부에서 선언된 변수는 내부에서만 유효하다 = 지역변수 

 

const age = 30;

if(age>19){

   var txt = '성인';                                                            -> var는 이렇게 코드블록 끝나고 선언해도 사용가능

}                                                                                   let const는 블록안에서 선언해야함 

console.log(txt);

 

그런데 var도 함수내에서 선언되면 함수바깥에서 선언할수없음

function add(num1, num2){

  var result = num1 + num2;

}

add(2,3);

console.log(result);                            -> 에러발생!

 

= 예측가능한 결과와 버그를 줄이기위해 let const 사용 바람

'코딩 > 자바스크립트' 카테고리의 다른 글

JS / 객체, 생성자 함수  (0) 2022.03.30
JS / 함수  (0) 2022.03.29
JS / 배열, for in  (0) 2022.03.28
JS / 반복문  (0) 2022.03.28
JS / switch, 삼항연산자, 짧은조건문  (0) 2022.03.28