현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.
이 장에서는 JavaScript에서 숫자와 날짜로 작업하는 방법을 소개합니다.
숫자
JavaScript에서 모든 숫자는 double-precision 64-bit binary format IEEE 754 (즉, -(253 -1)과 253 -1 사이의 숫자)입니다. 정수의 특정 유형은 없습니다. 부동 소수점 숫자를 나타낼 수 있을 뿐 아니라, 숫자 형식은 세 개의 상징적인 값: +
Infinity
, -
Infinity
, and NaN
(숫자가 아닌 값)을 갖습니다. JavaScript에서 다른 기본형과 문맥에 대한 것은 JavaScript data types and structures를 참조하세요.
여러분은 숫자 리터럴의 네 가지 유형을 사용할 수 있습니다: 10진수, 2진수, 8진수, 16진수
10진수
1234567890 42 // Caution when using leading zeros: 0888 // 10진수 888로 해석됩니다. 0777 // parsed as octal in non-strict mode (511 in decimal)
10진 리터럴은 또 다른 10진수 다음에 영(0)으로 시작할 수 있다는 점에 유의하세요. 하지만 만약 앞에 0 다음 수가 8보다 작으면, 그 수는 8진수로 해석됩니다.
2진수
이진수 구문은 앞에 0 다음에 소문자나 대문자 라틴어 문자 "B"(0b 또는 0B)를 사용합니다. 0b 이후에 숫자가 0 또는 1이 아닌 경우, 다음 구문
에러가 발생합니다: "0b 이후 이진 수 누락".
var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648 var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040 var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607
8진수
8 진수 구문은 앞에 0을 사용합니다. 0 이후의 숫자가 0에서 7까지 범위 밖에 있는 경우, 숫자는 10진수로 해석됩니다.
var n = 0755; // 493 var m = 0644; // 420
16진수
16진수 구문은 앞에 0 다음에 소문자나 대문자 라틴어 문자 "X"(0x 또는 0X)를 사용합니다. 0X 이후 숫자가 범위(0123456789ABCDEF) 밖에 있는 경우, 다음 구문
에러가 발생합니다: "식별자는 숫자 리터럴 후 즉시 시작됩니다".
0xFFFFFFFFFFFFFFFFF // 295147905179352830000 0x123456789ABCDEF // 81985529216486900 0XA // 10
수 개체
내장 수
개체 숫자 상수를 위한 속성이 있습니다. 예를 들어 숫자가 아니라 최대값 그리고 무한대로 말이다. 당신은 이러한 속성의 값을 변경 할 수 없고 다음과 같이 사용합니다:
var biggestNum = Number.MAX_VALUE; var smallestNum = Number.MIN_VALUE; var infiniteNum = Number.POSITIVE_INFINITY; var negInfiniteNum = Number.NEGATIVE_INFINITY; var notANum = Number.NaN;
당신은 항상 미리 정의된 번호 개체 위에 보여진 대로의 속성을 참조해야합니다. 당신이 직접 만든 수 개체의 속성을 참조해야합니다.
다음 표에서는 번호 개체의 속성이 요약되어 있습니다.
특성 | 묘사 |
---|---|
Number.MAX_VALUE |
가장 큰 대표적인 번호 |
Number.MIN_VALUE |
가장 작은 대표적인 번호 |
Number.NaN |
특별한 "숫자가 아닌" 값 |
Number.NEGATIVE_INFINITY |
특별한 부정적인 무한한 값; 오버 플로로 리턴됨. |
Number.POSITIVE_INFINITY |
특별한 긍정적인 무한한 값; 오버 플로로 리턴됨. |
Number.EPSILON |
한 값과 제일 작은 값 사이의 차이는 표시할 수 있는 것보다 한 수 . |
Number.MIN_SAFE_INTEGER |
자바 스크립트에서 최소 안전한 정수. |
Number.MAX_SAFE_INTEGER |
자바 스크립트에서 최대 안전한 정수. |
방법 | 묘사 |
---|---|
Number.parseFloat() |
그리고 부동 소수 점 수를 반환하고 문자열 인수를 구문 분석합니다. Sam은 글로벌 parseFloat() 함수로. |
Number.parseInt() |
지정된 radix 또는 베이스의 정수를 반환하는 문자열 인수를 구문 분석합니다. 똑같이 글로벌 parseInt() function. |
Number.isFinite() |
이 전달된 값은 한정 여부를 확인합니다. |
Number.isInteger() |
이 전달된 값은 정수 여부를 확인합니다. |
Number.isNaN() |
이 전달된 값 Not-a-Number 여부를 확인합니다. 원본 글로벌 (isNaN) 의 더욱 강력한 버전이다. |
Number.isSafeInteger() |
그것은 안전한 정수인지 제공된 가치는 숫자 여부를 확인합니다. |
계속해서 감소하는 프로토 타입한 다양한 형태에 번호를 개체에서 정보를 검색하는 데 사용방법을 제공합니다. 다음 표는 Number.prototype의 방법을 요약하였다.
방법 | Description |
---|---|
toExponential() |
지수표기법 안에서 번호를 나타내는 문자열을 반환합니다. |
toFixed() |
문자열 고정 소수 점 표기법의 수를 나타내는 문자열을 반환합니다. |
toPrecision() |
지정된 정밀에 고정 소수 점 표기법의 수를 나타내는 문자열을 반환합니다. |
수학 개체
내장 수학
개체 속성과 수학 상수 기능을 위해 방법을 가지고 있습니다. 예를 들어, 수학 개체의 PI속성 파이 (3.141...)의 응용 프로그램에서로 사용할 가치를 가지고 있습니다.
Math.PI
마찬가지로, 표준 수학 함수 수학의 방법이 있다. 이것은 삼각 로그 기하급수적 그리고 다른기능들을 포함한다. 예를 들어, 만약 당신이 삼각 함수 사인을 사용하고 싶다면, 이것을 씁니다.
Math.sin(1.56)
수학의 모든 삼각 방법 라디안의 인수에 찍는 것을 명심해라.
다음 표에서는 수학 개체의 방법을 요약하였습니다.
방법 | 묘사 |
---|---|
abs() |
절대 값 |
sin() , cos() , tan() |
표준 삼각 함수; 라디안에서의 인수 |
asin() , acos() , atan() , atan2() |
역삼각 함수; 라디안에 반환 값 |
sinh() , cosh() , tanh() |
쌍곡삼각함수; 라디안에 반환 값. |
asinh() , acosh() , atanh() |
역쌍곡삼각함수; 라디안에 반환 값. |
지수와 로그 기능. | |
floor() , ceil() |
가장큰/가장작은 정수 보다 적은/많은 또는 그와 동등한 원칙으로 반환해라. |
min() , max() |
더적거나 더많은 쉼표의 (각각) 숫자 인수의 나뉜목록으로 반환해라. |
random() |
0과 1사이의 난수를 반환해라. |
round() , fround() , trunc() , |
반올림과 절단 기능들. |
sqrt() , cbrt() , hypot() |
제곱 근, 세 제곱 근, 평방 인수의 합의 제곱 근. |
sign() |
그 수가 양수인지 음수인지 0인지를 가르키는 숫자의 표시. |
clz32() ,imul() |
32비트 이진 표시의 주요 제로 비트 수. 그 두 인수의 C-like 32비트 곱셈의 결과. |
많은 다른 물체와는 달리, 당신의 수학 개체를 만들지 않는 것. 당신은 항상 내장된 수학 개체를 사용합니다.
날짜개체
자바 스크립트는 날짜 데이터 형식이 없습니다. 그러나, 당신은 날짜
개체와 당신의 응용프로그램에서 날짜와 시간과 함께 작동하기위해 이 방법을 사용할 수 있습니다. 날짜개체는 날짜를 설정하고 얻고 조작할 수 있는 많은 방법들을 가집니다. 그것은 어떤 특성을 가지고 있지 않습니다.
자바 스크립트 자바와 비슷하게 날짜를 처리합니다. 두 언어들은 많은 같은 날짜 방법들을 가집니다. 그리고 두 언어들은 1970년 1월 1일 00:00시부터 밀리초만큼의 데이터들을 저장합니다.
날짜 개체 범위는 -100,000,000일 100,000,000일로 1월, 1970년 협정 세계시에 의해 정해졌습니다.
날짜 개체를 만드는 법.
var dateObjectName = new Date([parameters]);
날짜개체이름은 이미 만들어진 날짜개체의 이름입니다; 그것은 기존 개체의 새 개체나 속성입니다.
새로운 키워드 없이 전화 날짜가 단순히 문자열 표현으로 제공된 날짜로 변환합니다.
앞 구문에서 매개변수들은 아래 규칙을 따릅니다.
- 아무것도없을때: 오늘의 날짜와 시간을 만듭니다. 예를 들어,
today = new Date();
. - 날짜를 나타내는 문자열의 형식: "Month day, year hours:minutes:seconds."예를 들어,
var Xmas95 = new Date("December 25, 1995 13:30:00")
.만약 당신이 시간, 분, 또는 초를 빠뜨린다면, 값은 0이 됩니다. - 정수 값의 연도, 월, 날의 집합입니다. 예를 들어,
var Xmas95 = new Date(1995, 11, 25)
. - 연도, 월, 일, 시, 분,초 동안 정수 값의 집합입니다.. 예를 들어,
var Xmas95 = new Date(1995, 11, 25, 9, 30, 0);
.
날짜 개체의 표현 방법
날짜와 시간을 조절하는 날씨개체표현 방법은 아래 종류로 나뉩니다:
- "set" 방법, 날짜 개체 안에서의 날짜 및 시간 값을 설정합니다.
- "get" 방법, 날짜 개체 안에서의 날짜 및 시간 값을 얻습니다.
- "to" 방법, 날짜 개체로부터 문자열 값을 반환합니다.
- 날짜 문자열을 분석하기위해 파스와 UTC방법을 사용합니다.
"get"과 "set"방법으로 당신은 초, 분, 시간, 한 달의 날, 한 주의 날, 월, 년도를 자세하게 얻을 수 있습니다. 한 주의 날을 리턴하는 것은 setDay 방법이 아니라 getDay방법입니다. 왜냐하면 한 주의 날은 자동적으로 설정되기 때문입니다. 이런 방법들은 아래 나오는 것처럼 이런 값들을 나타내기위해 정수를 사용합니다:
- 초와 분: 0 to 59
- 시간: 0 to 23
- 요일: 0 (Sunday) to 6 (Saturday)
- 날짜: 1 to 31 (day of the month)
- 월: 0 (January) to 11 (December)
- 연도: years since 1900
예를 들어, 당신이 아래 값들을 정의한다고 치자:
var Xmas95 = new Date("December 25, 1995");
그러면 Xmas95.getMonth()
11로 리턴합니다, and Xmas95.getFullYear() 1995로 리턴합니다
.
getTime과 setTime방법들은 날짜를 나눌때 유용하다. getTime방법은 날짜개체에 대해 1970년 1월 1일 00:00시부터 밀리초단위로 리턴합니다.
예를 들어, 다음 코드는 현재 년도에 남아 수를 표시합니다:
var today = new Date(); var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // Set day and month endYear.setFullYear(today.getFullYear()); // Set year to this year var msPerDay = 24 * 60 * 60 * 1000; // Number of milliseconds per day var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay; var daysLeft = Math.round(daysLeft); //returns days left in the year
이 예제에는 오늘 날짜가 포함된 오늘이라는 명칭을 가진 날짜개체를 만듭니다. 그리고 나서 endYear라는 날짜개체를 만들고 현재연도를 설정합니다. 그 다음 하루당 밀리초의 수와 getTime과 전체 값에 반올림을 사용하면서 today와 endYear의 값을 계산합니다.
파스 방법은 날짜문자열부터 기존의 날짜개체까지의 값을 할당하기에 유용합니다. 예를 들어, 다음 코드는 그 IPOdate 개체에 날짜값을 할당하기위해 parse와 setTime을 사용합니다;
var IPOdate = new Date(); IPOdate.setTime(Date.parse("Aug 9, 1995"));
표준
다음 예제에서는 함수 JSClock() 디지털 시계의 형식으로 시간을 반환합니다.
function JSClock() { var time = new Date(); var hour = time.getHours(); var minute = time.getMinutes(); var second = time.getSeconds(); var temp = "" + ((hour > 12) ? hour - 12 : hour); if (hour == 0) temp = "12"; temp += ((minute < 10) ? ":0" : ":") + minute; temp += ((second < 10) ? ":0" : ":") + second; temp += (hour >= 12) ? " P.M." : " A.M."; return temp; }
JSClock함수는 처음에 time이라 불리는 새로운 날짜개체를 만듭니다; 주어진 인수가 없을 때, 시간은 현재의 날짜와 시간으로 만들어집니다. 그리고나서 현재의 시간,분 과 다음 시간,분, 초를 할당하는 getHours, getMinutes, getSeconds방법들을 불러옵니다.
다음 4개의 명령어는 시간에 따라 문자열 값을 만듭니다. 첫번째 명령어는 조건식을 이용함과 동시에 그것의 값을 할당하면서 다양한 temp를 만듭니다; 만약 hour가 12보다 크다면, 그렇지않으면 단순히 시간이고, 시간이 0이 아니라면, 이런 경우에는 12가 됩니다.
다음 명령어는 minute값을 temp에 붙입니다. 만약 minute의 값이 10보다 작다면, 조건식은 그 전의 0과 함께 문자열은 더합니다; 그렇지 않으면 이것은 구별 콜론과 함께 문자열을 더합니다. 그리고 나서 명령어는 두번째 값을 같은 방식으로 temp에 붙입니다.
마지막으로, 조건식은 hour가 12이거나 더 큰 수이면 temp에 "P.M."이라고 붙입니다. 그렇지 않으면 이것은 temp에 "A.M."이라고 붙입니다.