[2023-02-21]연산자
복습
1) undefined와 object는 값은 같지만 타입이 다르다.
var myValue1; // undefined
var myValue2 = null // object
(myValue1 == myValue2) : true : 값만 비교하는 거라서 !
(myValue1 === myValue2) : false : 값과 타입을 다 비교해서 false !
var myValue1 ; //undefined
var myValue2 = null; // object
var myValue3 = "" ; // string타입 , 길이가 0
(myValue1 == myValue3) : false
(myValue2 == myValue2) : false
var nowDate = Date()
var resultP = document.getElementById("dateP")
resultP.innerHTML = nowDate;
4)escape character '앞에 \넣기
var str = "\'pudding\' is ";
document.write(str); // 'pudding' is
5) infinity, NaN
infinity : 타입은 number , 의미는 무한대로 큰 값을 의미 , ( 0이 아닌 숫자를 0으로 나눌 때)
NaN : Not a Number : 타입은 number , 의미는 0~9 아닌 문자로 구성된 값은 내부적으로 NaN으로 처리
1.산술연산자
a%b : a를 b로 나눈 수의 나머지값
var x =5;
var y =2;
console.log(x%y); // 1
var x =5;
var y =2;
console.log(String(x)+y); // 52
숫자 x를 String문자형으로 변환해서 +가 되서 y도 문자형으로 변환
var x =5;
var y =2;
console.log(String(x)*y); // 10
x가 문자형이 되도. * 산술연산자가 나왔기 때문에, 숫자로 계산된다.
여러개의 산술 연산자가 사용된 경우
var a = b = c = 5;
2.대입연산자
var x = 10;
x = x - 5;
console.log(x); //5
x = x -5 -> x-5를 실행 후, 변수 x에 대입
var x=10;
var y =20;
var b = x>y;
console.log(b); //false
비교연산자가 들어가서 조건문을 판멸하는 연산자가 된다.
var y=20;
y=y+2;//22
y+=2; //24
y=y-2; //22
y-=2;//20
y=y*2;//40
y*=2;//80
y=y/2;//40
y /=2;//20
y = y%2//0
3.증감연산자 (++,-- 일항연산자)
var x = y = a = b = 10;
var result = ++x - 3;
console.log(result); //8
++가 앞에 있으면 , x에 이미 1이 포함되있는거라 ++x는 11이 된다
var x = y = a = b = 10;
var result = x++ -3;
console.log(result); //7
++가 x뒤에 있으니까. x는 아직 10이다. 하지만 다음 계산부터 x는 11로 되서 계산된다.
var x = y = a = b = 10;
var result = --x +3
console.log(result); //12
var x = y = a = b = 10;
var result = x-- +3
console.log(result); //13
--가 x뒤에 있으니까 x는 아직 10이고 , 다음 계산부터 x가 9인 상태로 시작된다.
var x =10;
var y = x-- + 5 + --x;
console.log(y); // 10 + 5 + 8
x-- => 아직 10이지만 , 다음 계산부터 9가 되는데, 다음에 나오는 x는 --x라서 9인상태에서 -1을 더 빼서 8이다.
4.비교연산자 & 논리연산자
<기본>
1.비교연산식
==: 값 같으면 true
===:값과 타입 모두 같아야 true
!=:값이 같지 않으면 true
!==: 값이나 타입이 같지 않으면 true
2.논리연산식
a&&b : a랑 b가 무조건 같아야함 AND
a||B : a랑 b중 둘중에 하나만 같아야 함 or
var x = 1;
var y = 0;
console.log(!(x==y)); //true
var x = 3;
var y = 5;
console.log(x+6>y+"<br>"); //false
뒤에 "<br>" 때문에 y+"<br>" 은 문자형이 된다.
즉,다른 타입의 비교가 일어나서 false이다.
var x = 3;
var y = 5;
console.log((x+6>y)+"<br>"); //true
이를 막기 위해 괄호부터 계산을 시작할 수 있다.
문자형을 비교할 수 있다. 소문자 a~z 의 값이 대문자보다 크다(소문자가 더 먼저 만들어짐)
var a = "abc";
var b = "ab";
var c = "Xyz";
console.log(a>b); // true
console.log(b>c); //true a랑 X비교
console.log(a<c); //false
제일 앞에 있는 문자를 가지고 비교한다.
console.log("3">"a"); // false
console.log("10"<"a"); //true
문자값이 숫자보다 크다
console.log(11>"11"); //false
다른 타입 비교는 false
console.log(true!="a");//true
다른 타입 변화라 false이지만 !=의 비교이기 때문에 true
console.log("11">"2"); //false
console.log("22">"1"); // true
console.log(true=="true"); //false
console.log(true != "true"); //true
타입이 다르면 비교못해서 false나옴
console.log(true == Boolean("true")); // true
console.log(String(true) == "true"); //true
var x = true;
var y = false;
console.log((x&&y)); //false
console.log((x||y)); //true
변수 대입된 값 0 : false
변수 대입된 값 0이 아닌 모든 숫자 : true
var x = 0;
console.log(Boolean(x));//false
var x = 1;
console.log(Boolean(x));//true
var 변수 = "" , undefined, null 모두 false
var str ="";
console.log(Boolean(str));//false
var str;
console.log(Boolean(str));//false
var str = null;
console.log(Boolean(str));//false
var str = "";
if(str){
console.log("조건참")
}else{
console.log("조건 거짓");
}