자바스크립트는 대소문자를 구분를 해야하는 점이 있습니다.
변수나 함수 이름 등 모두 대소문자를 구분합니다. 따라서 test 와 Test는 다른 변수입니다.
식별자
식별자란 변수나 함수, 프로퍼티, 함수 매개변수의 이름입니다.
식별자 조건
첫 번째 문자는 반드시 글나 밑줄(_), 달러 기호($) 중 하나여야 합니다.
다른 문자에는 글자나 밑줄, 달러 기호, 숫자를 자유롭게 쓸 수 있습니다.
firstSecond
myCar
doSomethingImportant
관습적으로 카멜 케이스로 씁니다. 카멜 케이스란 첫 번째 글자는 소문자로 쓰고 단어가 바귈 때는 단어의 첫 글자를 대문자로 쓰는 표기법입니다.
꼭 이렇게 쓰라는건 아닌데 이 형식을 쓰면 다른 사람들도 볼때 편해 볼 수 있어 이 형식을 따르길 권장합니다.
주석
자바스크립트는 한 줄 주석과 블록 주석이 있습니다.
// 한줄 주석
/*
* 이런 형식을 써서
* 주석을 여러 줄로 쓸 수 있습니다.
*/
두번째와 세번째 줄에 있는 아스테리스크는 가독성을 위해 추가한것이며 규칙은 아닙니다.
스트릭트 모드
스트릭트 모드는 기존과 다른 방식으로 자바스크립트를 파싱하고 실행하라는 지시하는 것입니다.
전체 스크립트에 스트릭트 모드를 적용하려면 다음 문장을 스크립트 맨 위에 추가하십시오.
"use strict";
이 문법은 자바스크립트의 버전인 ES3 문법과 호환하도록 만든 것 입니다.
문장
자바스크립트는 각 문장은 세미콜론으로 종료합니다.
var sum = a + b
var minus = a - b;
문장 마지막에 세미콜론을 꼭 써야 하는 건 아니지만 항상 세미콜론을 쓰길 권합니다.
문장을 세미콜론으로 끝내지 않으면 압축을 했을때 문법 에러가 발생할 수 있어 문법 에러 방지에 있어서 세미콜론을 사용해 주세요.
변수
자바스크립는 느슨한 변수 타입을 사용하는데, 이 말은 변수에 어떤 타입의 데이터라도 저장할 수 있다는 의미입니다.
변수를 정의할 때는 다음과 같이 var연산자 다음에 변수 이름을 씁니다.
var 는 키워드이며 변수 이름은 식별자 입니다.
var message;
이 코드는 message라는 이름의 변수를 정의하며 해당 변수에는 어떤 값이든 할당 할 수 있다.
변수를 초기화하지 않으면 특별한 값 undefined가 할당된다.
var message = "kakaoTalk";
message 변수가 문자열 값 "kakaoTalk"를 넣었다.
하지만, 이건 문자열 타입으로 지정 한 건 아니다.
message변수 "kakaoTalk"이라는 문자열 타입이 넣어 졌지만 문자열 타입을 다른걸로 넣을 수 있다.
var message = "kakaoTalk";
message = 100;
var 연산자는 변수를 로컬 스코프에서 정의한다는 점을 반드시 기억해야 한다.
예를 들어 함수 안에서 var 키워드를 써서 변수를 정의하면 해당 변수는 함수가 종료하는 즉시 없어집니다.
function test() {
var message = "kakaoTalk"; // 지역 변수
}
test();
console.log(message); // 에러
test() 함수를 호출하면 변수를 생성하고 값을 할당합니다. 그 직후 지역 변수는 사라져 var를 생략하면 전역으로 정의 할 수 있다.
function test() {
message = "KaKaoTalk"; // 전역변수
}
test();
console.log(message); // kakaoTalk
var 연산자를 제거함으로서 message 변수는 전역 변수가 되어 버린다.
test() 함수를 호출하는 즉시 변수가 정의 되며 함수 외부에서도 이 변수에 접근 할 수 있다.
변수를 한꺼번에 여러개 선언하고 싶을 때는 쉼표로 구분하여 한 문장에서 선언할 수 있다.
var meesage = "hi",
found = false,
age = 29;
변수 세 개를 정의하고 초기화 하였다.
변수 타입이 서로 다르더라도 선언할 수 있다.
데이터 타입
자바스크립트에는 기본적인 데이터 타입이 다섯 가지 있습니다.
"원시 데이터 타입" 이라 부르기도 하는데 undefined, Null, 불리언(boolean), 숫자, 문자열 이 여기에 해당합니다.
객체라고 불리는 복잡한 데이터 타입도 있습니다.
typeof 연산자
자바스크립트를 사용하는데 있어서, 데이터 타입을 알아내야 할 때가 있다.
정의되지 않은 변수 : "undefined"
불리언 : "boolean"
문자열 : "string"
숫자: "number"
함수를 제외한 객체 또는 null : "object"
함수 : "function"
typeof 연산자는 다음과 같이 사용합니다.
var message = "some string";
alert(typeof message); // "string"
alert(typeof (message)); // "string"
alert(typeof 95); // "number"
typeof 는 함수가 아니라 연산자 이므로 괄호는 쓰지 않아도 됩니다.
undefined 타입
undefined라는 값은 특별한 값입니다. var를 써서 변수를 정의했지만 초기화(값을 넣는 것)을 하지 않았다면 undefined가 뜰것이다.
var message;
alert(message == undefined); // true
var message = undefined;
console.log(message == undefined); // true
undefined값을 할당한 변수와 정의되지 않은 변수 구분하는 방법
var message; // 정의 하지 않은 변수
alert(message); // "undefined"
alert(age); // 에 러
변수를 정의 하지 않은건 에러를 불러 일으킵니다.
Null 타입
Null 타입 역시 값 하나만을 갖습니다. Null타입의 값은 특별한 값인 null입니다.
null은 빈 객체를 가리키는 포인터이므로 null에 typeof 를 호출하면 object 를 반환합니다.
var message = null;
alert(typeof message); // object
alert(null == undefined); // true
undefined는 null에서 파생했으므로 == 연산자는 항상 true를 반환합니다.
불리언 타입
불리언 타입은 true와 flase 두 가지 리터럴 값만 가지고 있다.
var found = true;
var lost = false;
불리언 타입은 다른 데이터 타입에서 변환하여 얻을 수 있다.
var message = "KaKaoTalk";
if (message) {
alert("Line 도 있습니다."); // 출력 됩니다.
}
var messageBolean = Boolean(message); // true
숫자 타입
가장 기본적인 숫자 리터럴 형식은 10진법입니다.
var intNum = 10; // 정수
정수는 8진수 나 16진수로 나타낼 수 있다.
var octalNum1 = 070; // 8진법 56
var octalNum2 = 079; // 10진법 79 ( 마지막 9가 8진수의 8을 넘어서 10진수로 인식)
var hexNum1 = 0xA; // 16진수 10
var hexNum2 = 0x1f; // 16진수 31
소수점이 있는 부동소수점 숫자를 표현도 가능하다.
소수점 앞에 반드시 정수를 써야 하는건 아니지만 가급적 쓰길 권장 합니다.
var floatNum1 = 1.1;
var floatNum2 = 0.1;
var fllotNum3 = .1; // 유효하지만 권장하지 않습니다
부동소수점은 다른것에 비해 메모리를 두배로 소모한다.
그래서 소수점으로 써도 정수로 변환 가능한걸로 리터럴을 넣으면 정수로 변환합니다.
var floatNum1 = 1.; // 정수 1로 간주합니다.
var flootNum2 = 10.0; // 10으로 간주합니다.
큰 숫자를 표시할때는 e-표기법을 써서 표현합니다.
지수 표기법은 e 앞에 숫자에 10을 e 뒤의 숫자만큼 곱한는 것입니다.
var flootNum1 = 3.125e7; // 31,250,000
메모리 제한 때문에 모든 숫자를 나타낼 수 는 없다.
Number의 최솟값은 Number.MIN_VALUE으로 나타낼 수 있고
Number의 최댓값은 Number.MAX_VALUE 프로퍼티에 저장되어 있어 있다.
만약에 최대값과 최솟값보다 작거나 큰 것을 넣게 되면 Infinity로 변환 되며 -Infinity로 나타낼 수 있다.
그리고 isFinite()함수를 쓰면 최솟값과 최댓값 사이에 있을 경우에만 true를 반환합니다.
var result = Number.MIN_VALUE + Number.MAX_VALUE;
console.log(isFinite(result)); // false
NaN 타입
숫자형 값 중에는 NaN이란 특별한 값이 있습니다.
이 값은 숫자를 반환할 것으로 의도한 조작이 실패 했을 때 반환하는 값입니다.
NaN은 어떤값과도 일치하지 않습니다.
console.log(NaN == NaN);
isNaN() 함수가 있는데 '숫자가 아닌 값' 인지 검사합니다.
alert(isNaN(NaN)); // true
alert(isNaN(10)); // false
alert(isNaN(true)); // false
숫자가 아닌 값을 바꾸는 함수는 Number(), parseInt(), parseFloat() 함수 세가지 입니다.
Number()에서 다양한 규칙을 사용하기 때문에 데이터 타입을 숫자로 변환하는 일은 혼란스러울 수 있다.
var num1 = Number("Hello World"); // NaN
var num2 = Number(""); // 0
var num3 = Number("000011"); // 11
var num4 = Number(true); // 1
정수 형태의 문자열을 숫자로 바꿀 때는 보통 parseInt() 함수를 씁니다.
var num1 = parseInt("1234blue"); // 1234
var num2 = parseInt(""); // NaN
var num3 = parseInt("0xA"); // 16진수 10
var num4 = parseInt("22.5"); // 22
var num5 = parseInt("50"); // 50
var num6 = parseInt("AF", 16); // 175 -- AF (16진수)
부동 소수점 형식 으로 나타내는 parseFloat() 는 함수는 이렇게 사용합니다.
var num1 = parseFloat("123blue"); // 1234
var num2 = parseFloat("0xA"); // 0
var num3 = parseFloat("22.5"); // 22.5
var num4 = parseFloat("0908.5"); // 908.5
var num5 = parseFloat("3.125e7"); // 31250000
문자열 타입
문자열 데이터는 유니코드 문자의 연속이다.
문자열은 큰따옴표(") 나 작은따옴표(')로 감싸서 표현하므로 문자열을 저장한다.
var firName = "Bill";
var lastName = 'Jack';
문자열의 길이를 알기 위해서는 문자 변수 뒤에 length 프로퍼티를 통해 얻습니다.
var text = "유투브크리에이터";
alert(text.length); // 8
문자열은 불변입니다.
죽, 문자열이 일단 만들어지면 그 값을 바꿀 수 없습니다. 변수에 저장한 문자열을 바꾸려면 기존의 문자열을 파괴하고 다음과 같이 해당 변수에 새 문자열을 채워야 합니다.
var long = "Java";
lang = lang + "Script"; // JavaScript
값을 문자열로 바꾸는 방법은 두 가지가 있습니다.
첫번째 방법은 toString() 메서드를 사용하는 방법입니다.
var age = 11;
var ageAsString = age.toString(); // 문자열 "11"
var found = true;
var foundAsString = found.toString(); // 문자열 "true"
toString() 메소드에 매개변수를 쓰는 경우는 거의 없습니다. 하지만 숫자에서 호출할 때에는 toString() 메서드에서 매개변수를 하나 쓸 수 있는데 이 매개변수는 진법을 나타내며 기본적으로 10진수를 표현하지만 입력을 하게 되면 진법이 변환 할 수 있습니다.
var num = 10;
alert(num.toString()); // "10"
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(10)); // "10"
alert(num.toString(16)); // "a"
두번째 문자열을 밖꾸는 방법은 String() 함수를 쓰는 것입니다.
null이나 undefined일 가능성이 있다면 값의 타입에 관계없이 항상 문자열로 반환을 한다.
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); // "10"
alert(String(value2)); // "true"
alert(String(value3)); // "null"
alert(String(value4)); // "undefined"
객체 타입
객체는 데이터와 기능의 집합이다.
객체는 new 연산자 다음에 새로 만들 객체 타입의 이름을 써서 만듭니다.
var o = new Object();
생성자에 매개변수를 넘기지 않는다면 괄호를 생략해도 됩니다. 매개 변수가 없다면 다음 예제처럼 괄호를 생략해도 안전하긴 하지만 권장하지는 않습니다.
var o = new Object;
'프로그래밍 > 자바스크립트(javascript)' 카테고리의 다른 글
[자바스크립트/javascript] 변수, 컨텍스트, 가비지 콜렉션 (0) | 2020.05.04 |
---|---|
[자바스크립트/javascript] 함수 (0) | 2020.05.03 |
[자바스크립트/javascript] 제어문, 반복문 ( if문, switch문, for문, for-in문, while문, do-while문 ) (0) | 2020.05.02 |
[자바스크립트/javascript] 자바스크립트 연산자 (0) | 2020.05.02 |
[자바스크립트/javascript] 태그 위치, 스크립트 처리 지연 (0) | 2020.04.30 |