Operator
연산자 자바랑 진짜 거의 똑같음!!!
우선순위가 같을때는 왼쪽에서 오른쪽으로 계산
산술연산자 > 비교연산자 > 논리연산자
이런거도 다 똑같음!
다른거 위주로 집중해서 공부하면 될 거 같다!
1. 산술연산자
console.log(3 % 5 * 2 + 10 / 5);
console.log(5/3);
// 요거 조금 다르죠 자바는 1나오지만 (int랑int연산하면 int형이니까) 자스는 소수점까지 나와용

2.비교연산자
자바랑 다르게 === , !== 요런게 있다???
== 는 타입이 다르더라도 내부적으로 강제 형변환해서 비교하고,
=== 는 강제 형변환 과정없이 정확하게 값과 타입이 일치 해야함
***비교를 위해서 항상 === 사용을 권장한다 ***
자스는
0, null, false 이면 false(0)으로 처리한다!!!
if절에 모든식 다 가능(조건식은 물론 산술식,비교식도 들어갈 수 있다!!!)
기타 산술식은 true는 1, false는 0
console.log('가나다'>='가나다'); //자바는 이런거 안됨, 자스는 됨 오? 자바의compareTo와 비슷하네
console.log(3 > 9 == 0); // false 가 0으로 처리 됨
console.log("0 =='0' :" , 0 =='0'); // 값만 갖죠
console.log("0 ==='0' :" , 0 ==='0'); // 타입이 다르죠
console.log("false == '0':",false == '0');
console.log("false === '0':",false === '0');

자스에는 NaN은 타입은 숫자인데 숫자는 아님을 의미!
단순히 숫자가 아닌것만이 아니라 타입은 숫자임 !!!
직접 봐야지 이런건
console.log(new Number('1004A'));
=>이거 콘솔에서 보면
Number { NaN } 요렇게 찍힘
그래서 아하! 이거로 등가비교 하면 되지 않나 싶기도 한데 그러면 클나 안돼안돼
반례를 들어볼게
console.log("NaN == NaN : ",NaN == NaN); //faluse로 나옴 걍 그렇게 나와 비교 안된다고!
console.log("NaN === NaN : ",NaN === NaN); // 위가 안되는데 얘라고 되겠어?
console.log(new Number('1004A')); //얘도 NaN
console.log(new Number('hello')); // 얘도 NaN hello 랑 1004A랑은 같을 수x

그럼 어찌라고
등가비교 하지말고 isNaN()함수로 NaN(Not a Number) 걍 숫자인지 아닌지를 판단하시라고
var num1 = new Number('hello');
console.log(num1) ; //얘도 NaN
var num2 = new Number('hello');
console.log(num2) ; // 얘도NaN
console.log(num1 == num2); //직접비교안됨
console.log(isNaN(num1))

== 랑 === 다시 비교하면
==는 강제로 항변환 해서 값만 같으면 true
===는 값과 타입까지 같아야 true 아니면 false
num1 = new Number(100);
num2 = 100;
console.log(num1 == num2); // true
console.log(num1 === num2); // false
자스의 배열은 자바의 컬렉션과 같다!
밑에 설명하면 같은 object 타입이라고 해도 주소값이 다르기 때문에 값이 같다고 할 수 없다!!
var arr1 =['가길동',20]; // new Array('가길동',20) 이렇게 써도 된다고 했지
var arr2 =['가길동',20];
console.log("arr1의 타입:",typeof arr1)
console.log("arr2의 타입:",typeof arr2)
// 객체끼리 비교할 땐 주소를 비교함, 메모리에 저장된 주소값을 가르키기 때문에 둘이 달라...
console.log("arr1 == arr2",arr1 == arr2);
arr2=arr1; // 주소까지 같게 만들었으
console.log("arr1 === arr2",arr1 === arr2); // 같아졌으

3. 논리연산자
console.log("[논리연산자]");
console.log(3 > 2 || 5 < -10 && !(3-4)); // true
4.증감연산자
console.log("[증감연산자]");
var num=10;
num++;
console.log("num:%s",num++); // num:11
console.log("num:%s",num); // num:12
5.단축연산자
(위에서 num값이 12인 상태임)
console.log("[단축연산자]");
console.log(num %= 5); // 2
'학원 > JS' 카테고리의 다른 글
10/28 31-4 [JS] Array 주요 메소드 정리 (1) | 2022.10.29 |
---|---|
10/28 31-3 [JS] Array (for~ in문) (0) | 2022.10.28 |
10/27 30-6 [JS] Array (1) | 2022.10.27 |
10/26 29-7 [JS] Variable01 (0) | 2022.10.26 |
10/26 29-6 [JS]JavaScript 들어가기 (0) | 2022.10.26 |