JavaScript-3(타입변환, 대화상자, 연산자)
1.타입변환
- 변수는 타입이 고정되어있지않음 같은 변수에 다른 타입의 값을 대입할 수 있음 (자바스크립트만 가능, 다른 언어들은 내가 직접 타입을 정해줌)
- 묵시적 타입 변환
- 특정 타입의 값을 기대하는 곳에 다른 타입의 값이 오면, 자동으로 타입 변환해서 사용
let a = "10"; let b = "20"; let result = a + b; // 값 1020 (문자열의 연결) result = a - b; // -10 값 나옴 (숫자형으로 바꾼다음 계산함)
- JS는 덧셈만 연결이 되고 나머지 연산은 숫자로 변환해서 값을 구함
let c = "문자"; result = a - c; // NaN 출력됨 (Not a Number) -- 정의되지않은 값이나 표현할 수 없는 값 // NaN : 0을 0으로 나누거나, 숫자로 변환할 수 없는 연산을 시도할 경우 반환됨
// example let a = 10 + "문자열"; console.log(a) let b = "3" * "5" ; console.log(b) // 문자열 형태지만 자동으로 숫자형으로 바뀌어서 계산함 let c = 1 - "문자열"; console.log(c) let d = "10" - "20"; console.log(d)
- 특정 타입의 값을 기대하는 곳에 다른 타입의 값이 오면, 자동으로 타입 변환해서 사용
- 명시적 타입 변환
- 자바스크립트는 자동으로 타입변환을 사용하지만, 명시적으로 타입을 변환할 방법도 제공함
- Number() : 문자를 숫자로 변환
- String() : 숫자나 불린의 값을 문자형으로 변환
- Boolean() : 문자나 숫자등의 자료를 불린형으로 변환
- Object() : 모든 자료형을 객체형으로 변환
- ParseInt() : 문자를 int형으로 변환 // 정수형
- ParseFloat() : 문자를 float형으로 변환 // 실수형
// example let num1 = "10"; let num2 = "5"; console.log("현재 num1의 타입 : " + (typeof num1)); // string console.log("num1 + num2 : " + (num1 + num2)); // 105 console.log("Number(num1) + Number(num2) : " + (Number(num1) + Number(num2))); // 15
- 자바스크립트는 자동으로 타입변환을 사용하지만, 명시적으로 타입을 변환할 방법도 제공함
2.대화상자
- alert() : 사용자에게 메세지를 보여주고, 확인을 기다립니다
- confirm() : 사용자에게 메세지를 보여주고, 확인이나 취소를 누르면 그 결과를 불린값으로 반환함
-
prompt() : 사용자에게 메세지를 보여주고 사용자가 입력한 !! 문자열 !! 을 반환함
// example window.alert("안녕하세요 JavaScript") // window는 생략가능 let result = window.confirm('확인 또는 취소를 눌러주세요') // 앞에 변수값을 선언해줘야 값을 반환해서 넣어줌 console.log(result); // 확인을 누르면 True, 취소를 누르면 False 값이 나옴 prompt("이름을 입력하세요"); let name = prompt('너의 이름을 알려줘'); console.log(name); let num1 = window.prompt('첫번째 숫자입력'); let num2 = prompt('두번째 숫자를 입력해줘여'); console.log(num1 + num2); // 이렇게 쓰면 문자열 + 문자열 형태로 반환됨 (디폴트값) console.log(Number(num1) + Number(num2)); // 이렇게 값을 변환해줘야 숫자로 나옴
3.연산자(Operator)
-
산술연산자 : 사칙연산을 다루는 기본적인 연산자
+ : 덧셈 - : 뺄셈 * : 곱셈 / : 나눗셈 % : 나눈 나머지값 ** : 거듭제곱
// example let num1 = Number(prompt('첫번째 숫자를 입력하세요')); let num2 = Number(prompt('두번째 숫자를 입력하세요')); let result = num1 + num2; console.log((`num1 + num2 = ${result}`)); // console.log(('num1 + num2 =' + result)); // 위아래는 같은 형태로 출력되지만 위가 덜 귀찮은 형태 result = num1 - num2; console.log((`num1 - num2 = ${result}`)); result = num1 * num2; console.log((`num1 * num2 = ${result}`)); result = num1 / num2; console.log((`num1 / num2 = ${result}`)); result = num1 % num2; console.log((`num1 % num2 = ${result}`)); result = num1 ** num2; console.log((`num1 ** num2 = ${result}`));
-
비교연산자 : 피연산자의 상대적인 크기를 판단하여 참/거짓으로 반환
> : 왼쪽의 값이 오른쪽의 값보다 크면 참을 반환합니다. < : 오른쪽의 값이 왼쪽의 값보다 크면 참을 반환합니다. >= : 왼쪽의 값이 오른쪽의 값보다 크거나 같으면 참을 반환합니다. <= : 오른쪽의 값이 왼쪽의 값보다 크거나 같으면 참을 반환합니다. == : 값이 같으면 참을 반환함 === : 값이 같고, 타입까지 같으면 참을 반환함 != : 타입에 관계업이 값이 다르면 참을 반환함 !== : 두 식의 값이 같지않고 타입까지 같지않으면 참을 반환함)
// example let num1 = 3, num2 = 5; let str1 = "3", str2 = "abcde", str3 = "bcd"; let result = (num1 > num2); console.log(`num1 > num2 : ${result}`); result = (str2 <= str3); console.log(`str2 <= str3 : ${result}`); // true가 나옴. 사전순으로 이해하면됨. a가 b보다 뒤에 나옴. 더 크다 result = (num1 == str1); console.log(`num1 == str1 : ${result}`); // 타입이 다르지만 값이 같기때문에 true로 반환됨 result = (num1 === str1); console.log(`num1 === str1 : ${result}`); // 타입이 다르지만 값이 같기때문에 true로 반환됨
- 대입연산자
- 변수에 값을 대입할 떄 사용하는 연산자
= (왼쪽변수에 오른쪽 값을 대입할 때) += (왼쪽변수에 오른쪽 값을 더한 후, 그 결과를 왼쪽변수에 대입) ex) let a = 10; a += 1; // a = a+1;과 같은 뜻이다 // 무조건 오른쪽부터 더해라는 이야기 -= (왼쪽변수에 오른쪽 값을 뺀 후에, 그 결과를 왼쪽 변수에 대입) *= (왼쪽변수에 오른쪽 값을 곱한 후에, 그 결과를 왼쪽 변수에 대입) /= (왼쪽변수에 오른쪽 값을 나눈 후에, 그 결과를 왼쪽 변수에 대입) %= (왼쪽변수에 오른쪽 값의 나머지값을 구한 후에, 그 결과를 왼쪽 변수에 대입) **= (왼쪽변수에 오른쪽 값의 거듭제곱 후, 그 결과를 왼쪽 변수에 대입)
// example let num1 = 10, num2 = 10, num3 = 10; num1 += 5; console.log(`num1 += 5 : ${num1}`); console.log(`num2 -= 5 : ${num2}`);
- 증감연산자
- 증감연산자는 값을 1씩 증가하거나, 감소시킬 때 사용하는 연산자. 연산자가 어느쪽에 위치하느냐에 따라 순서 및 결과가 달라짐
++변수 : 변수의 값을 1 증가시킨 후 다음 연산을 진행 변수++ : 먼저 다른 연산을 수행하고나서, 변수의 값을 1증가시킵니다 --변수 : 변수의 값을 1 감소시킨 후 다음 연산을 진행 변수-- : 먼저 다른 연산을 수행하고나서, 변수의 값을 1감소시킵니다 let a = 5; ++a; // a = a+1; a++; let b = 5; let b = ++a; // b = 6; let a = 5; let b = a++; // b = 5;
// example let num1 = 10; console.log(`num1의 값 : ${num1}`); // 10 console.log(`++num1의 값 : ${++num1}`); // 11 console.log(`num1의 값 : ${num1}`); // 11 console.log(`num1++의 값 : ${num1++}`); // 'num1++의 값 : ' + num1++ // 11 console.log(`num1의 값 : ${num1}`); // 12
- 논리연산자
- 주어진 논리식을 판단하여 참과 거짓을 반환함
A && B -- AND 연산 : 두 논리식이 모두 참이면, 참으로 반환 ex) ID / PW 둘 다 True이면, 로그인 성공 ! True / True 일때만 True, 나머지는 전부 False A || B -- OR 연산 : 두 논리식중 한 가지라도 참이면, 참으로 반환 ex) false false 일 때만 false 로 나옴 , 나머지는 모두 True !A -- NOT 연산 : 논리식의 결과가 참이면 거짓으로, 거짓이면 참으로 변환하는 연산자 ex) let b1 = true; console.log(!b1); 결과값은 False가 나옴 A && B 결과 true true true true false false false true false false false false A || B 결과 true true true true false true false true true false false false
// example let num1 = 10, num2 = 5; let result1 = (num1 == num2); // False let result2 = (num1 >= num2); // True console.log(`result1 && result2 : ${result1 && result2}`); console.log(`result1 || result2 : ${result1 || result2}`); console.log(`!result1 : ${!result1}`);
- 비트연산자
- 잘 안쓰지만 상식적으로 알면 좋다~
- 논리연산자와 비슷하지만 비트단위로 논리연산을 수행함
& : 대응되는 비트가 모두 참이면 참을 반환하는 연산자 25 & 18 = ? 11001 (25-10진법) 10010 (18-10진법) 10000 따라서 25 & 16 = 16(10진법) | : 대응되는 비트중 하나라도 참을 반환하는 연산자 ^ : 대응하는 비트가 서로 다르면 참을 반환하는 연산자 << : 지정한 수만큼 비트를 왼쪽으로 이동시킴 >> : 지정한 수만큼 비트를 오른쪽으로 이동시킴
- bit은 컴퓨터 용량의 최소단위, 0 또는 1을 저장하는 단위 - 1byte = 8bit - KB(킬로바이트) : 1KB = 1024byte - MB(메가바이트) : 1MB = 1024KB - GB(기가바이트) : 1GB = 1024MB - TB(테라바이트) : 1TB = 1024GB - PB(페타바이트) : 1PB = 1024TB - 헥사 / 제타 / 로타 - 이진법 연산까진 아는게 좋다 32 16 8 4 2 1 1 1 0 0 1 0 (50) 1 1 0 0 1 (25) 1 0 0 1 0 (18) 1 0 1 (5) - 25(10진법) = 11001(2진법) - 18(10진법) = 10010(2진법)
// example let num1 = 25, num2 = 18; console.log(`num1 & num2 : ${num1 & num2}`) console.log(`num1 | num2 : ${num1 | num2}`) // 둘 중 하나라도 참이면 참 // 25 = 11001 // 18 = 10010 // ?? = 11011 = 27 console.log(`num1 ^ num2 : ${num1 ^ num2}`) // 값이 서로 다르면 참(1) // 25 = 11001 // 18 = 10010 // ?? = 01011 = 11 console.log(`num1 << num2 : ${num1 << 2}`) // 25 = 11001인데, 2칸을 왼쪽으로 옮기면 // 1100100 (값 100) console.log(`num1 >> num2 : ${num1 >> 2}`) // 25 = 11001인데, 2칸을 오른쪽으로 옮기면 // 110이 됨 (값 6)
- 삼항연산자 (많이 씀)
- 조건식에 따른 참, 거짓에 따라 반환값이 달라지는 연산자
ex) 변수 = 조건식? 반환값1(True일 경우) : 반환값2(False일 경우)
// example let num1 = Number(prompt('첫번째 숫자를 입력하세요')); let num2 = Number(prompt('두번째 숫자를 입력하세요')); let result = (num1 > num2) ? num1 : num2; console.log(`두 수중 큰 수는 ? ${result}`);
- 조건식에 따른 참, 거짓에 따라 반환값이 달라지는 연산자
댓글남기기