Chapter 1 - VALUES, TYPES, AND OPERATERS
1. Values
● 컴퓨터는 전기신호가 강하면 high pulse, 약하면 low pulse로 0,1이라는 2진수의 bit 단위로 구성
● 다수의 bit를 사용한 정보의 최소 단위 'chunk' 즉, value
● Number, String, Boolean, Undefined value, Fucntion, Object 6가지의 기본타입
2. Numbers
● JavaScript Numbers are Always 64-bit Floating Point
●64-bit Floating Point의 한계
ex)
function myNumber(){
var x = 999999999999999; // x will be 999999999999999
var y = 9999999999999999; // y will be 10000000000000000
console.log(x);
console.log(y);
}
●소수 계산
ex)
var x = 0.2 +0.1
console.log(x); //x 는 0.30000000000000004, 17자리부터 다른 값이 나온다.
1. var x = (0.2 * 10 + 0.1 * 10)/ 10을 쓸 수 있다. 이외에
2. var sum = function(a, b){
return Math.round((a+b) *)/100;6
}
3. var sum = function(a, b){
return Math.round(a.toFixed(2) * 100 +b,toFixed(2) * 100)/100;
}
//round() : 근처의 정수값으로 변환
//toFixed(n) : 소수n번째
●Specital Number
-JS에서는 특별한 value가 있는데 number로 간주되지만 일반적인 number처럼 동작하지 않는다.
➀Infinity, -Infinity
- Number를 연산 하였을 때 +무한대 값이 나오는 경우와 -무한대 값이 나오는 경우
function myInfinity() {
var myNumber = 2;
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
console.log(myNumber );
}
var x = 2/0;
var y = -2/0;
console.log(x); //Infinity
console.log(y); //-Infinity
}
➁NaN
- JS에서 숫자가 아닌 것을 나타내는 예약어
function myFunction() {
var x = 100/"apple";
var y = 100/"10";
console.log(x); //NaN
console.log(y); //10
console.log(typeof (x)); //number
console.log(isNaN(x)); //true
}
- 결과값 예상하기
1. console.log(x+y);
2, var v1 = NaN;
var v2 = "5";
console.log(v1+v2;);
3. Strings
●큰 따옴표("), 작은 따옴표(')를 이용하여 따옴표안에 문자를 적어서 사용
●따옴표 사이에 오기 어려운 것들이 있는데 예를 들면 newLine(엔터)는 구별하기가 어렵다.
●문자열은 한 줄에 적혀있어야만 한다.
escape charaters | 의미 |
\' | 작은 따옴표 |
\" | 큰 따옴표 |
\ \ | 백슬래시 |
\b | 백스페이스 |
\f | 폼 피드 |
\n | 줄 바꿈 |
\r | 캐리지 리턴 |
\t | 가로 탭 |
4. Booleans
●프로그래밍에서 yes, no 또는 on, off같이 확실하게 구별되는 변수
●JS에서 Boolean타입은 True, False
●실제 존재하는 값을 True로 리턴한다.
●존재 하지 않는 값(0, "", undefined, null, false, NaN)를 제외한 모든 값을 true를 리턴
●JS에서 NaN은 무의미한 값으로 간주되어 false를 리턴
String 비교 |
console.log("Aardvark" < "Zoroaster"); //true console.log("aardvark" < "Zoroaster"); //false
|
Number 비교 |
console.log(1+1 == 2 && 10 * 10 > 50); - 괄호를 사용하셔 우선순위를 바꿀 수 있다. |
테스트 |
function myBoolean() {
var b1 = Boolean(100); var b2 = Boolean(3.14); var b3 = Boolean(-15); var b4 = Boolean("Hello"); var b5 = Boolean('false'); var b6 = Boolean(1 + 7 + 3.14); ////////////////////////////// var b7 = Boolean(0); var b8 = Boolean(100 / "apple"); var b9 = Boolean(""); var b10 = Boolean(); var b11 = Boolean(null); /////////////////////////////// console.log("100 : " + b1); console.log("3.14 : " + b2); console.log("-15 : " + b3); console.log("\'Hello\' : " + b4); console.log("\'false\' : " + b5); console.log("1 + 7 + 3.14 : " + b6 + "\n");
console.log("0 : " + b7); console.log("100/\"apple\" : " + b8); console.log("\"\" : " + b9); console.log(" : " + b10); console.log("null : " + b11); } |
5. Automatic Type Conversion
●JS에서는 Type이 다른 변수들끼리 연산을 할 때 자동으로 타입전환을 해준다.
●같은 type의 변수들을 비교 할때 ==을 사용해서 true인지 확인할 수 있다.
ex) console.log(8 * null) console.log("5" -1) console.log("5"+1) console.log("five" * 2) console.log(false == 0)
|
console.log(null == undefined); console.log(null == 0);
|
●'=='는 피연산자들이 서로 다른 타입이면 강제 형변환을 해서 비교한다.
●강제 형변환을 막기 위해서는 '===', '!=='연산자를 사용한다
0 == false 의 결과값 : true
"" == false의 결과값 : true로 리턴된다.
자동으로 형변환을 막기 위해서는 ===, !==연산자를 사용한다.
0 === false 의 결과값 : false
"" === false의 결과값 : false로 리턴 된다.
*JavaScript Type Conversion Table
기존 Value | Number로 형변환 | String으로 형변환 | Boolean으로 형변환 |
false | 0 | "false" | false |
true | 1 | "true" | true |
0 | 0 | "0" | false |
1 | 1 | "1" | true |
"0" | 0 | "0" | true |
"1" | 1 | "1" | true |
NaN | NaN | "NaN" | false |
Infinity | Infinity | "Infinity" | true |
-Infinity | -Infinity | "-Infinity" | true |
"" | 0 | "" | false |
"20" | 20 | "20" | true |
"twenty" | NaN | "twenty" | true |
null | 0 | "null" | false |
undefined | NaN | "undefined" | false |
- null, undefined는 실제값이 존재하는지 확인하는 용도로 자주 사용된다.