+, -, *, /, %
; %는 나머지연산%
의 경우 모두 부동소수점의 연산+
연산의 경우 한 쪽 항이 문자열이면 다른 한쪽 항도 문자열로 만든다.++, --, +, -
++
는 증가 연산자--
는 감소 연산자+
는 아무 처리 없음 연산자-
는 부호 반전 연산자예시
var a = 1;
b = ++a; // b는 2, a도 2
c = a++ + 2; // c는 4, a는 3이 된다.
+=, -=, *=, /=, %=
a += 1
는 a = a + 1a -= 1
는 a = a - 1a /= 1
는 a = a / 1a %= 1
는 a = a % 1.cos()
, .PI
등 프로퍼티와 메쏘드를 가지고 있음.+
연산자의 피연산자가 모두 문자열이면 문자열로 연결+
연산자의 피연산자 중 하나가 문자열이 아니라면, 문자열로 반꾼 후 연결
var a = "Hello" + "Hello"; // "HelloHello"
var b = 1 + "일"; "1일"
문자열을 String 객체로 변환하기 위해 String 생성자를 사용
var msg = new String("string for String object");
중요 메소드는 match(regExp)
, slice(m, n)
, split(s)
, indexOf(s)
, toLowerCase(s)
, toUpperCase(s)
, length
가 있다.
msg.charAt(3)
String
의 메소드와 프로퍼티는 문자열에서 사용가능하다.String
객체의 프로퍼티나 메서드를 사용하면 일시적으로 String
객체로 래핑된 이후, 메서드를 실행하고, 메모리에서 삭제된다. 이러한 일시적인 객체를 래퍼 객체 라고 한다.replace
나 toUpperCase
와 같은 메서드의 경우 새로운 문자열을 반환할 뿐, 기존의 문자열을 수정하지는 않는다..charAt()
메서드 대신에 []
를 통한 접근이 가능하다.[]
를 통한 인덱싱으로 값을 대입하고자 하면 무시된다.==
, !=
, ===
, !==
, <
, >
, <=
, >=
가 존재한다. ==
값이 같음 (느슨한 비교)
좌우 피연산자의 타입이 같을 때
true
, 다르면 fasle
true
다르면 false
좌우 피연산자의 타입이 다를 때
true
undefined
와 null
을 같을 것으로 친다.true
는 1로, false
는 0으로 변환해서 비교 1 == "1" // true
null == undefined // true
true == 1 // true
[2] == 2 // true
===
값과 타입이 같음 (엄격한 비교) true
를 1로, false
를 0으로 변환하지 않음그냥 무조건 두개가 같아야 함.
1 === "1" // false
null === undefined // false
true === 1 // false
[2] === 2 // false
!=
값이 다름!==
값과 타입이 다름<
작음>
큼<=
작거나 같음>=
크거나 같음&&
, ||
, !
""
, 0
, -0
, NaN
, null
, undefined
는 모두 falsetypeof
: 데이터 타입 조사new
: 새로운 객체 선언 연산자in
: 객체의 프로퍼티 포함 여부 확인 연산자delete
: 객체의 프로퍼티나 배열 요소 제거 연선자instanceof
: 객체의 종류 확인 연산자eval()
: 인수로 받은 문자열을 자바스크립트 코드로 실행 - 사용하지 않는 것이 권장됨. (해킹의 위험, 속도가 느림, 굳이 사용할 필요 없음)?:
var parity = (a % 2 == 0)? "짝수" : "홀수";
앞의 표현식이 참일 경우 “짝수”, 거짓일 경우 “홀수”
Number
객체의 메소드 활용 .toString()
.toFixed( num )
소수점 자리를 인수로 주어 거기까지만 문자열로 변환
var a = 13.23;
a.toString(); // "13.23"
a.toFixed(1); // "13.2"
String()
함수를 활용 new
연산자와 함께 쓰면 객체 생성자로 사용가능하지만, new
연산자 없이 사용하면 일반 함수로 사용가능하다.
String(26) // -> "26"
수식 안에서 암묵적으로 변환
var s = "2";
s - 0; // -> 2
parseInt
, parseFloat
함수 사용문자를 숫자로 해석할 수 없을 때는 NaN
을 반환
parseInt("3.14"); // -> 3
parseFloat("3.14"); // -> 3.14
parseInt("3 metter"); // -> 3
parseInt("ABC"); // -> NaN
Number
함수를 사용new
연산자 없이 사용하면 객체 생성함수가 아닌 일반 함수로 사용가능
Number("123"); // -> 123
Number(true); // -> 1
Number(false); // -> 1