JS는 원래 웹브라우저를 제어하기 위한 언어였지만, 웹서버(Node.js)에서도 사용되면서 탈웹브라우저의 성격을 띄게 되었다.
💡 따라서 웹브라우저와 웹서버 모두를 하나의 언어로 제어할 수 있는 장점이 있다.
Google Apps Script를 통해 spreadsheet에서도 사용되면서 탈웹의 성격도 가지게 되었다.
Math.pow(3,2); // 9, 3의 2승
Math.round(10.6); // 11, 10.6을 반올림
Math.ceil(10.2); // 11, 10.2를 올림
Math.floor(10.6); // 10, 10.6을 내림
Math.sqrt(9); // 3, 3의 제곱근
Math.random(); // 0부터 1.0 사이의 랜덤한 숫자
Math.round(Math.random() * 100); // 100보다 작은 정수를 랜덤으로
// === 사용하기
alert(1=='1'); //true 같은 의미를 갖는다면 동일하게 본다
alert(1==='1'); //false
== : 같은 의미를 갖는다면 동일하게 인식
=== strict equal operator: 같은 의미와 더불어 데이터타입이 같아야 동일하게 인식
alert(null == undefined); //true
alert(null === undefined); //false
alert(true == 1); //true
alert(true === 1); //false
alert(true == '1'); //true
alert(true === '1'); //false
alert(0 === -0); //true
alert(NaN === NaN); //false
| null | undefined | NaN |
|---|---|---|
| 의도적으로 값이 없는 상태 | 의도하지 않았는데 값이 없는 상태 | 연산이 불가능할 때 |
https://dorey.github.io/JavaScript-Equality-Table/
참고: ==와 ===의 차이를 직관적으로 알 수 있는 사이트
빈문자열 '' : false
undefined : false
// 0부터 9까지 변수 i에 순차적으로 값을 할당
for(var i = 0; i < 10; i++){
// 0부터 9까지의 변수를 j의 값에 순차적으로 할당
for(var j = 0; j < 10; j++){
// i와 j의 값을 더한 후에 출력
// String은 숫자인 i와 j의 데이터 타입을 문자로 형태를 변환하는 명령이다.
// String()을 제거하고 실행해보면 의미가 좀 더 분명하게 드러날 것이다.
document.write(String(i)+String(j)+'<br />');
}
}
function get_argument(a) {
retrun a;
}
get_argument(1);
get_argument(a) → a : 매개변수(parameter)
get_argument(1) → 1 : 인자(argument)
var numbering = function (){
i = 0;
while(i < 10){
document.write(i);
i += 1;
}
}
numbering();
JS에서는 변수를 함수로 정의할 수 있다.
자바스크립트는 함수형 언어이므로 함수가 언어에서 차지하는 위상이 높기 때문이다.
❓익명함수 일회성 함수
(function (){
i = 0;
while(i < 10){
document.write(i);
i += 1;
}
})();
// 정의된 함수 바로 호출 -> 익명함수 - 일회성 함수
괄호를 통해 함수를 정의하고 바로 호출할 수 있다.
배열 : 연관된 데이터를 모아 통으로 관리하기 위해서 사용되는 데이터타입
var member = ['egoing', 'k8805', 'sorialgi']
alert(member[0]); // 인덱스로 접근
alert(member[1]);
alert(member[2]);
function get_members(){
return ['egoing', 'k8805', 'sorialgi'];
}
members = get_members();
// members.length는 배열에 담긴 값의 숫자를 알려준다.
for(i = 0; i < members.length; i++){
// members[i].toUpperCase()는 members[i]에 담긴 문자를 대문자로 변환해준다.
document.write(members[i].toUpperCase());
document.write('<br />');
}
var li = ['a','b','c','d','e'];
li.push('f'); // ['a','b','c','d','e','f']
push() : 배열을 한 칸 늘려 마지막에 원소 하나 추가
li = li.concat(['f','g']); // ['a','b','c','d','e','f','g']
concat() : 배열을 인자로 취하여, 여러 원소를 마지막에 추가
li.unshift('z'); // ['z','a','b','c','d','e']
unshift() : 배열의 시작점에 원소 추가
array.splice(index, howmany, element1, ... , elementN);
var a = ['a','b','c'];
a.splice(1,0,'d'); // a = ['a','d','b','c']
var a = ['a','b','c'];
a.splice(1,1,'x','y'); // a = ['a','x','y','c'] 리턴값 ['b']
// 인덱스 1 지점에서 1개의 원소 삭제하고 요소들을 추가한다
배열을 바꾸고 삭제한 값을 리턴한다.
var li = ['a','b','c','d','e'];
li.shift(); // a 리턴 후 li = ['b','c','d','e']
shift() : 배열의 첫 번째 원소 제거
var li = ['a','b','c','d'];
li.pop(); // e 리턴 후 li = ['a','b','c','d']
pop() : 배열의 마지막 원소 제거
var li = ['a','b','c','d','e'];
li.sort();
li.reverse(); //역순정렬
sort(sortFunction());
sort() : 오름차순 정렬
reverse() : 내림차순 정렬
인덱스로 숫자를 사용하는 배열 이외에, 인덱스로 문자를 사용하고 싶다면 객체를 사용하면 된다. 다른 언어에서는 연관배열(associative array) 또는 맵( map), 딕셔너리(Dictionary)라는 데이터 타입이 객체에 해당한다.
var grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80}; //key와 value
var grades = {};
grades['egoing'] = 10;
grades.k8805 = 6;
grades.sorialgi = 80;
grades[’k8805’], grades.k8805 두가지 방법으로 접근 가능
grades[’k8805’]로 접근 시에는 [’k88’+’05’]와 같이 사용 가능하다.
var grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80};
for(key in grades) {
document.write("key : "+key+" value : "+grades[key]+"<br />");
} // 배열에서도 사용 가능
key in object 와 같은 형태로 사용할 수 있으며, 배열에서도 사용 가능
var grades = {
'list': {'egoing': 10, 'k8805': 6, 'sorialgi': 80},
'show' : function(){
for(var name in this.list){
document.write(name+':'+this.list[name]+"<br />");
}
}
};
grades.show();
/*
grades['list']['egoing'] = 10
grades['show'](); => 함수 실행
*/
자바스크립트에선 함수도 변수로 선언할 수 있기 때문에 값으로써의 함수는 객체 안에 들어갈 수 있는 것!
this → 이 함수가 속해있는 객체를 가리키는 변수 / 여기서는 grades를 말함
참고
인프런-생활코딩 자바스크립트(JavaScript) 기본
https://opentutorials.org/course/743/4650