티스토리 뷰
JavaScript란?
client 쪽에서, 즉 웹브라우저에서 동작하는 언어이다. HTML에서 CSS를 적용하기 위해 <style>태그 안에 내용을 정의했듯이 JavaScript에서는 화면의 동적 설정을을 <script> 태그 안에 정의한다.
Events in JavaScript
Event란 마우스 또는 키보드를 통해 어떤 행위를 하는 것이다. 자바스크립트 언어로는 이런 행위에 따른 동작을 설정해 줄 수 있다.
- onclick
- onchange
- onmouseover
- onmouseout
- onkeydown
- onload
JavaScript 적용하는 방법 3가지(CSS와 동일)
- internal
- external
- 서버에 있는 소스를 사용 할 경우: <script src="example.js"></script>
- 외부 소싀의 url을 그대로 사용 할 경우: <script src="url"></script>
- inline
Data Display
- innerHTML : HTML content를 바꾼다
- this.innerHTML: 다른 element를 id로 참조하지 않고 현재 element의 content를 바꿀 수 있게 해준다
- src: 이미지 source를 바꾼다
- style
- 예) style.background-color, style.fontSize등...
- HTML elements를 숨기려면 style.display= "none"
- document.write()
- window.alert() 또는 그냥 alert()
- console.log()
- javascript는 브라우저에서 f12 또는 오른쪽 마우스 클릭->검사 해서 디버깅 한다.
- window.print() : 현재 페이지를 인쇄하는 설정으로 넘어간다
<!DOCTYPE html>
<html>
<body>
<h2>What Can JavaScript Do?</h2>
<p id="demo">JavaScript can change HTML content.</p>
<button type="button" onclick='document.getElementById("demo").innerHTML = "Hello JavaScript!"'>Click Me!</button>
</body>
</html>
JavaScript Function
"Event"가 일어날 때 호출해서 사용할 수 있는 함수이다.
호출할 element를 지정하는 방법:
- getElementById()
- getElementByTagName()
- getElementByClassName()
- getElementByName()
- getElementByTagNameNS()
함수 선언하는 방법:
function functionname(){
...
...
}
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = "Paragraph changed.";
}
</script>
</head>
<body>
<h2>JavaScript in Head</h2>
<p id="demo">A Paragraph.</p>
<button type="button" onclick="myFunction()">Try it</button> <!--event를 통해 함수를 호출한다-->
</body>
</html>
Javascript 변수
변수에 type(정수형, 실수형, 문자열 등...)이 없다. 선언할 때는 type에 관계없이 var를 이용해서 선언한다. JavaScript에서 변수 이름을 identifier라고 부른다.
Data type 중에서 object type도 있다
예) var x ={firstName: "John", lastName: "Doe"};
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x, y, z; // Statement 1
x = 5; // Statement 2
y = 6; // Statement 3
z = x + y; // Statement 4
document.getElementById("demo").innerHTML =
"The value of z is " + z + ".";
</script>
</body>
</html>
JS 변수는 type에 영향을 받지 않기 때문에 문자열 두개를 합칠 때 다음과 같이 해도 된다
"John" + " " + "Doe"
<!--결과로 Jon Doe 가 출력된다-->
- 변수에 값을 할당 해주지 않으면 그 변수의 value는 undefined 값을 가진다.
변수를 출력해보면 undefined 문구가 나온다- 변수에 undefined 을 할당해주면 value와 type 모두 undefined 상태가 된다.
- null: value가 없다는 것을 뜻한다, 하지만 datatype 자체는 object이다.
- null과 undefined 은 값이 없다는 의미에서 value는 같으나 type이 다르다.
- 같은 이름의 변수를 다시 선언하는 것이 가능하다.
변수를 출력해보면 맨 마지막에 할당된 값이 출력된다. - 변수가 type에 대해서는 자유롭기 때문에 아래의 코드 처럼 연산 결과와 문자열을 합치는 것 또한 가능하다.
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Variables</h2>
<p>The result of adding 2 + 3 + "5":</p>
<p id="demo"></p> <!--출력 결과: 55-->
<p id="demo2"></p> <!--출려 결과: 5510-->
<script>
var x = 2 + 3 + "5";
var y= x + 10 ; //x 뒤에 문자열 5를 더했기 때문에 변수 y에 10을 더해도 뒤에 덧붙여진 형태로 나온다
document.getElementById("demo").innerHTML = x;
document.getElementById("demo2").innerHTML = y;
</script>
</body>
</html>
- 변수 이름은 영어 대소문자, $, 또는 _(underscore)으로 시작할 수 있다
JavaScript 연산자
- ** : ~의 제곱
- Math.pow() 함수와 같은 역할
예) Math.pow(5, 2) //결과: 25
- Math.pow() 함수와 같은 역할
- +, += : 숫자 연산 용도 외에도 문자열을 concatenate(뒤이어서 바로 붙일 때) 사용할 수 있다
- 숫자 + 문자열 = 문자열
<!DOCTYPE html>
<html>
<body>
<h2>The += Operator</h2>
<p id="demo"></p> <!--출력 결과: 100000-->
<script>
var x = 10;
x **= 5; // x= 10^5
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h2>The += Operator</h2>
<p id="demo"></p> <!--출력 결과: 100000-->
<script>
var x = 10;
x **= 5; // x= 10^5
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
value 순서에 따른 다른 연산 결과:
<!--value 순서에 따른 다른 연산 결과:-->
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p> <!--출력 결과: 20Volvo-->
<p id="demo2"></p> <!--출력 결과: Volvo164-->
<script>
var x = 16 + 4 + "Volvo";
var y= "Volvo" + 16 + 4;
document.getElementById("demo").innerHTML = x;
document.getElementById("demo2").innerHTML = y;
</script>
</body>
</html>
JavaScript 비교 연산자
- ===: equal value and type
- !==: not equal value or type
JavaScript Type 연산자
- typeof: 변수의 type을 return 해준다
예) typeof x
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
typeof "" + "<br>" +
typeof 123 + "<br>" +
typeof "John Doe";
</script>
</body>
</html>
<!--출력 결과:
string
number
string
-->
- instanceof: returns true of an object is an instance of object type
예) instanceof Array
그 외에 연산자
- . : Member 예) person.name
- [ ] : Member 예) person["name"]
- Bitwise Operators
- ^ : XOR
- <<: zero fill left shift
- >>: signed right shift
- >>>: zero fill right shift
JavaScript Types
JS type은 dynamic하기 때문에 하나의 변수가 여러 타입의 데이터를 가질 수 있다.
- primitive data
- number
소숫점도 표기 가능하다
scientific notation으로도 표기할 수 있다
예) var x= 123e-5 // 0.00123 - string
- boolean
true/false - undefined
- number
- complex data
- function
- object: object, array, null
<!--complex data 선언 방법-->
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
typeof {name:'john', age:34} + "<br>" +
typeof [1,2,3,4] + "<br>" +
typeof null + "<br>" +
typeof function myFunc(){};
</script>
</body>
</html>
JavaScript Arrays
[ ] 괄호로 표기한다. index 0부터 시작한다.
형식:
var array_name = [item1, item2, ...];
//또는
var cars = new Array("Saab", "Volvo", "BMW");
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Array indexes are zero-based, which means the first item is [0].</p>
<p id="demo"></p> <!--출력 결과: Saab-->
<script>
var cars = ["Saab","Volvo","BMW"];
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
JavaScript Objects
C언어에서 구조체처럼 여러 type의 변수를 하나로 묶는 것이다.
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p id="demo"></p>
<script>
var person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
document.getElementById("demo").innerHTML =
person.firstName + " is " + person.age + " years old.";
</script>
</body>
</html>
- name:value 형식으로 하나의 property를 정의한다
- name:method : property로 함수를 정의하는 것
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() { //property로 함수 정의
return this.firstName + " " + this.lastName;
}
};
- Member 변수를 참조 하고 싶을 때는
- "." 또는
- [ ] 를 사용한다
objectName.propertyName
//또는
objectName.propertyName
- new 라는 키워드로 변수를 선언 하면 변수의 type은 object로 지정된다.
var x = new String(); // Declares x as a String object
var y = new Number(); // Declares y as a Number object
var z = new Boolean(); // Declares z as a Boolean object
JavaScript Strings
문자열 함수:
- length: 문자열의 길이를 알아내는 속성
사용) 문자열 이름이 txt라고 했을 때 txt.length; - \n: 개행문자
- indexOf("찾고자 하는 문자열", "시작위치"): 문자열이 처음 등장하는 index를 리턴해준다
- 찾지 못했을 경우 -1을 리턴한다
사용) txt.indexOf("example")
- 찾지 못했을 경우 -1을 리턴한다
- lastIndexOf()
- search()
- slice(start, end)
- substring(start, end)
- substr(start, length)
- replace()
- /i : 대소문자 관계 없이 바꾸기
예시) /searchwword/i - /g : 모든 문자열 바꾸기
- /i : 대소문자 관계 없이 바꾸기
- toUpperCase()
- toLowerCase()
- + 또는 concat()
var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ", "World!");
- trim()
- charAt(position)
- charCodeAt(position)
- 인덱스 [ ]를 이용해서 문자열에 있는 하나의 character 에 접근할 수 있다
문자열 배열로 바꾸기
- split()
- seperator를 명시하지 않을 경우에는 index[0]에 전체 문자열을 가지고 있게 된다
var txt = "a,b,c,d,e"; // String
txt.split(","); // Split on commas
txt.split(" "); // Split on spaces
txt.split("|"); // Split on pipe
txt.split(""); // 문자열 전체를 배열로 교환
JavaScript Numbers
문자열과 숫자가 있을 경우 "+" 연산자는 숫자 사이에서는 더하기 연산자이고, 문자열이 있을 때는 concatenate하게 되니 중의해서 사용 하도록 하자.
- NaN: not a legal number를 뜻한다
- NaN의 type는 number 이다
- isNan(): 값이 숫자인지 검사해주는 함수
- Infinity (-Infinity)
- Infinity의 type는 number 이다
- toString(2//8/16/32/10) : 숫자의 진수를 설정
- 숫자를 object로 만들게 되면(변수 선언 할때 new 사용) "=="연산자를 통해 비교할 수 없다
var x = new Number(500);
var y = new Number(500);
// (x == y) is false because objects cannot be compared
- toExponential()
- toFixed(): 명시된 숫자까지 반올림해서 리턴한다
- toPrecision(): 명시된 숫자만큼의 길이로 값을 리턴한다
- valueOf()
- 변수를 숫자로 변환하기
- Number()
- parseInt()
- parseFloat()
- 숫자 속성
- MAX_VALUE
- MIN_VALUE
- POSITIVE_INFINITY
- NEGATIVE_INFINITY
- NaN
'JavaScript' 카테고리의 다른 글
JavaScript BOM (0) | 2020.07.29 |
---|---|
JavaScript: Element의 동적 추가와 삭제 (0) | 2020.07.29 |
JavaScript HTML DOM: Event listener (1) | 2020.07.28 |
JavaScript forms (0) | 2020.07.28 |
Javascript: function, events (0) | 2020.07.27 |
- Total
- Today
- Yesterday
- HTML #class
- meta #link #script #base #HTML
- HTML_Formatting
- html
- css
- JSP환경구축
- Block_element #inline_element
- fontstyle
- jsp
- STS4
- Mavenproject
- HTML #Canvas #SVG
- HTML #media #video #YouTube
- HTML #CSS
- annotation
- UserBean
- DynamicWebProject
- 인용문 #주석
- JSP_CRUD
- head #title #style
- box_model
- HTML #id #iframe
- links lists tables display
- DB4free
- HTML #Tables
- 2020Camp
- text_shadow
- HTML #Headings #Paragraph #Styles
- javascript #datatype
- HTML_Forms
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |