-
์น ๋ธ๋ผ์ฐ์ ์ ์ด
-
์ฌ์ฉ์๊ฐ ์ด๋ ํ ๋์์ ํ ๋ ์ด๋ ํ ๋์์ด ์ผ์ด๋๋๋ก ํ ๋ ์ฌ์ฉ
-
ํ ์น ๋ธ๋ผ์ฐ์
- ์ด์ ๋ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ธ์ด๋ก๋ง ์ฐ์ด์ง ์์
- ์น ์๋ฒ ๋์ ๋๊ตฌ (node.js - ์๋ฒ ์ฌ์ด๋ ์คํฌ๋ฆฝํธ)
-
ํ๊ฒฝ
- JavaScript ๊ฐ ~('Hello world'); ๋ช
๋ น์ ๋ด๋ฆด ๋,
- ์น ๋ธ๋ผ์ฐ์ : alert
- node. js : write
- SpreadSheet : msgBox
์์ ๊ฐ์ด, ์ฌ๋ฌ ํ๊ฒฝ์ ์ฌ์ฉ๋๋ฉฐ ๊ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ช ๋ น์ด ๋ฌ๋ผ์ง ์ ์์
- JavaScript ๊ฐ ~('Hello world'); ๋ช
๋ น์ ๋ด๋ฆด ๋,
-
js ์คํ
- script ํ๊ทธ ๋ด๋ถ์ javascript ์ฝ๋ ์์ฑ
- ์ค๋ฐ๊ฟ ๋๋ ; ์ ๋ช ๋ น์ด ๋๋ฌ์์ ์๋ฏธ
Math.pow(3,2); // 9
Math.round(10.6); // 11 (๋ฐ์ฌ๋ฆผ)
Math.ceil(10.2); // 11 (์ฌ๋ฆผ)
Math.floor(10.2); // 10 (๋ด๋ฆผ)
Math.random(); // ์์๊ฐ ๋์ (< 1)
100*Math.random(); // ์์๊ฐ ๋์ (< 100)
\ : \๋ค์ ๋ฌธ์๋ ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์ด ์๋, ๋จ์ ๋ฌธ์๋ก ์ทจ๊ธ
\n : ๋ฌธ์์ด ๊ฐํ
typeof 1 // "number"
typeof "1" // "string"
"1" + "1" // "11"
"code".indexOf("o") // 1 (๋ฌธ์์ index ๊ฒ์)
"jongho".toUpperCase(); // "JONGHO"
let a = ["lee", "jong", "ho"];
alert(a.length); // 3
-
์ฐ์ฐ์ : ์ด๋ ํ ์์ ์ ์ง์ํ๊ธฐ ์ํ ๊ธฐํธ
-
๋ฑํธ
alert(1 == '1') // true (๋ด์ฉ๋ง ๋น๊ต) alert(1 === '1'); // false (๋ฐ์ดํฐ ํ์ ๊น์ง ๋น๊ต) alert(null == undefined); // true (undefined : ๊ฐ์ด ์์, ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ํ์ง ์์ ์ํฉ) alert(null === undefined); // false alert(true == 1); // true (js์์ true๋ 1๋ก ๊ฐ์ฃผ) alert(true == '1'); // true alert(true === 1); // false alert(true === '1'); // false alert(0 === -0); // true (0๊ณผ -0์ ๊ฐ๋ค) alert(NaN === NaN); // false (NaN์ ๊ณ์ฐ ๋ถ๊ฐ๋ฅ์ด๋ฏ๋ก false) -
๋ถ์ ๊ณผ ๋ถ๋ฑํธ
alert(1!=2); // true alert(1!=1); // false ๋ง์ฐฌ๊ฐ์ง๋ก, !== ๋ ์๋ค. -
๋น๊ต ์ฐ์ฐ์
alert(10>1); // true alert(10>10); // false alert(20<=20); // true; -
์กฐ๊ฑด๋ฌธ / ๋ ผ๋ฆฌ์ฐ์ฐ์ / ๋ฐ๋ณต๋ฌธ์๋ต
-
๊ฒฝ๊ณ ์ฐฝ ์ถ๋ ฅ
-
alert์ ๋น์ทํ๊ฒ ๊ฒฝ๊ณ ์ฐฝ์ด ๋ ์ ๋ ฅ๋ฐ์ ์ ์์, ์ ๋ ฅ์ฐฝ์ ์ ๋ ฅ๊ฐ์ ๋ฃ์ผ๋ฉด ๊ฐ์ด ๋์ด๊ฐ
ex) alert(prompt("๋น์ ์ ๋์ด๋?")*2); // 20 ์ ๋ ฅ
โ >> alert(20*2); // ๊ฒฝ๊ณ ์ฐฝ์ 40 ์ถ๋ ฅ
ex2) id=prompt("์์ด๋๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์.')
โ if(id=='leejh' && pw='1111') { alert('์ ๋ณด๊ฐ ์ผ์นํฉ๋๋ค. '+id+'๋ ํ์ํฉ๋๋ค.') }
โ else { alert('์ ๋ณด๊ฐ์ผ์นํ์ง ์์ต๋๋ค.') }
- ์น ํ์ด์ง์ ์ง์ ํ์
chrome ๊ฐ๋ฐ์๋๊ตฌ - Sources ์์ line์ breakpoint ์ค์
์ค์ ํ ์คํํ๋ฉด breakpoint์์ ๋ฉ์ถ๋๋ฐ,
- |> ํด๋ฆญ ์, ์ดํ ์ ์ฒด ์คํ
- โ ํด๋ฆญ ์, ๋ฐ๋ณต๋ฌธ์ด๋ ํจ์ ๋ด์ ์ฝ๋๋ก ๋ค์ด๊ฐ or ๋ค์ ๋ช
๋ น ์คํ
- ํจ์ : ํ๋์ ๋ก์ง์ ์ฌ์คํ ํ ์ ์๋๋ก ํ๋ ๊ฒ
- ์ฌ์ฌ์ฉ์ฑ + ์ ์ง๋ณด์ ์ฉ์ด + ๊ฐ๋ ์ฑ
function ํจ์๋ช
( [param...[,param]] ){ // ํจ์ ์ ์
์ฝ๋
return ๋ฐํ๊ฐ // ์ถ๋ ฅ
}
ํจ์๋ช
(argument); // ํจ์ ํธ์ถ
-
ํจ์ ์ ์
function numbering ( ) { } // ์ด ์ ์๋ฐฉ๋ฒ๊ณผ
numbering = function () { } // ์ด ์ ์๋ฐฉ๋ฒ์ ๊ฐ์
โ ใด ๋ ๋ชจ๋ numbering(); ์ผ๋ก ํธ์ถ ๊ฐ๋ฅ
-
์ต๋ช ํจ์
( function ( ){ } ) ( ); // ํจ์ ์ ์ ํ ๊ดํธ๋ก ๋ฌถ๊ณ , (); ๋ก ๋ฐ๋ก ์ ์ธ ๊ฐ๋ฅ
โ // ์ด๋ฆ ์์ด ์คํํ ๋ ์ฌ์ฉ
-
let member=[ 'lee', 'jong', 'ho'];
- member[0], member[1] ๋ฑ์ผ๋ก ํธ์ถ ๊ฐ๋ฅ
-
ํจ์์ ๋ฐฐ์ด
function (get_members()) {
return [ 'lee', 'jong', 'ho' ]; // ๋ฐฐ์ด ์์ฒด๋ฅผ ๋ฆฌํด
}
let members=get_members(); // ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ํจ์ ํธ์ถ๋ก ์์ฑ
document.write(members[1]); // ๋ฐ๋ก ์ ๊ทผ ๊ฐ๋ฅ
-
๋ฐฐ์ด ๋ฐ์ดํฐ ์์ ํ๊ธฐ
let li = ['a','b','c']; li.push('e'); // push ํจ์๋ก ๋ฐฐ์ด์ ์ธ์ ํ๋ ์ถ๊ฐ li = li.concat( ['f','g'] ); // concat ํจ์๋ก ๋ฐฐ์ด(์ฌ๋ฌ ์ธ์) ์ถ๊ฐ li.splice(3,1,'d'); // 3๋ฒ์งธ index์ 1๊ฐ ์์('e')๋ฅผ ์ญ์ ํ๊ณ 'd'๋ฅผ ๋ฃ์ด๋ผ ใด index๋ 0๋ถํฐ ์์ ใด splice์ return๊ฐ์ ์ญ์ ๋ ์์ ['e'] li.unshift('z'); // unshift ํจ์๋ก ๋ฐฐ์ด ๋งจ ์์ ์ถ๊ฐ ์ถ๊ฐ ํ : document.write(li); // ["z","a","b","c","d","f","g"]let del = ['a','b','c']; del.shift(); // ๋งจ ์ ์์ ์ญ์ , return ๊ฐ : ["a"] del.pop(); // ๋งจ ๋ค ์์ ์ญ์ , return ๊ฐ : ["c"] ์ญ์ ํ : document.write(del); // ["b"]let li = ['c','d','b','a']; li.sort(); // ['a','b','c','d'] li.reverse(); // ['d','c','b','a'] function sortNumber(a,b){ return a-b; } // sort์ ๋ ฌ ๊ตฌํ li.sort(sortNumber); // ์คํ
-
๊ฐ์ฒด (dictionary)
- ์ฐ๊ด๋ฐฐ์ด(associative array), ๋งต(map), ๋์ ๋๋ฆฌ(Dictionary) ๋ฑ์ ๋ฐ์ดํฐ ํ์
- ๊ฐ์ฒด ์งํฅ ํจ๋ฌ๋ค์๊ณผ ์ฐ๊ด
ex) let grades = {'lee' : 10, 'jong' : 5, 'ho' : 15}; grades['jong'] // 5 grades.jong // 5 grades['jo'+'ng'] // 5 ์ ์์ ์์ ๋ฌธ์๋ key, ๊ฐ์ value ๊ฐ ๋จ๋ฐฐ์ด๊ณผ ์ฐจ์ด์ - ๋๊ดํธ๊ฐ ์๋ ์ค๊ดํธ๋ก ํ๊ธฐ - ์ธ๋ฑ์ค๋ฅผ ์ซ์๊ฐ ์๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ๊ฐ์ฒด ์ฌ์ฉ -
๊ฐ์ฒด์ ๋ฐ๋ณต๋ฌธ (for-in, for-each, for-of)
- ๋ฐฐ์ด์ index๊ฐ ์์๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ๊ฐ์ฒด๋ key-value ํํ์ - ํน๋ณํ for๋ฌธ ํ์
-
for-in ๋ฐ๋ณต๋ฌธ : key๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ
let grades = {'lee' : 10, 'jong' : 5, 'ho' : 15}; <ul> for(key in grades){ // ๋ณ์ in ๊ฐ์ฒด document.write("<li>key : "+key+" value : "+grades[key]+"</li>"); } </ul>-
foreach ๋ฐ๋ณต๋ฌธ
-
for-of ๋ฐ๋ณต๋ฌธ
-
-
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ
var grades={ 'list' : {'egoing' : 10, 'k8805' : 8, 'sorialgi' : 80}, 'show' : function(){ alert('Hello World'); } 'show_this' : function(){ alert(this); // this : ํจ์๊ฐ ์์๋ ๊ฐ์ฒด(grades)๋ฅผ ๊ฐ๋ฆฌํด console.log(this.list); // this๊ฐ ๊ฐ๋ฆฌํค๋ grades ์์ list ๋ฐฐ์ด for(let name in this.list){ console.log(name, this.list[name]); // ,๋ฅผ ํตํด ํ๋ฒ์ ์ฌ๋ฌ ๊ฐ ์ถ๋ ฅ } } } grades['show'](); // js์์๋ ํจ์๋ ๊ฐ์ด๋ฏ๋ก ํธ์ถ ๊ฐ๋ฅ // == grades.show();
-
ํ๋ก๊ทธ๋จ์ ๋ถ๋ถ๋ถ๋ถ์ผ๋ก ๋๋์ด ์ฝ๋์ ์ฌํ์ฉ์ฑ์ ๋์ด๊ณ , ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ ๋ค์ํ ๊ธฐ๋ฒ
- ๋ชจ๋ํ๋ฅผ ํตํด ๋ชจ๋๋ก ๋๋๋ค
-
์ฅ์
- ์์ฃผ ์ฌ์ฉ๋๋ ์ฝ๋๋ฅผ ๋ณ๋์ ํ์ผ๋ก ๋ง๋ค์ด ํ์ํ ๋๋ง๋ค ์ฌํ์ฉ ๊ฐ๋ฅ
- ์ฝ๋๋ฅผ ๊ฐ์ ํ๋ฉด ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ด ๊ฐ์
- ์ฝ๋ ์์ ์ ํ์ํ ๋ก์ง์ ๋น ๋ฅด๊ฒ ๊ฒ์ ๊ฐ๋ฅ
- ํ์ํ ๋ก์ง๋ง ๋ก๋ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๊ฐ์
- ํ ๋ฒ ๋ค์ด๋ ๋ชจ๋์ ์น๋ธ๋ผ์ฐ์ ์ ์ ์ฅ >> ๋์ผ ๋ก์ง ๋ก๋ ์ ๋คํธ์ํฌ ํธ๋ํฝ ์ ์ฝ (๋ธ๋ผ์ฐ์ ๋ง ํด๋น)
-
์์ํ js์๋ ๋ชจ๋ ๊ฐ๋ ์ด ๋ถ๋ช ํ๊ฒ ์กด์ฌํ์ง ์์
- ํธ์คํธ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ชจ๋ํ ๋ฐฉ๋ฒ์ด ๋ค๋ฆ / ์ฌ๊ธฐ์๋ ์น ๋ธ๋ผ์ฐ์ ์ ๋ํด ์์๋ด
-
๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ
<script src = "greeting.js"></script>
// ์ด ๋ถ๋ถ์ ๋ณ๋์ ํ์ผ๋ก ๋ชจ๋ํ๋ greeting.js ํ์ผ์ ์ฝ์ด์ ๋ถ๋ฌ์ค๋ ํจ๊ณผ๋ฅผ ๊ฐ์ง- ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ์์ฃผ ์ฌ์ฉ๋๋ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ๋๋ก ์ ์ ๋ฆฌํ ์ผ๋ จํ ์ฝ๋์ ์งํฉ (๋ชจ๋๊ณผ ๋น์ท)
- ex) jQuery
-
API ๋?
- Application Programming Interface
- ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ํ๊ฒฝ์ ์ ์ดํ๊ธฐ ์ํด ํ๊ฒฝ์์ ์ ๊ณต๋๋ ์กฐ์ ์ฅ์น
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ํตํด ์กฐ์ ๊ฐ๋ฅ
- ์ฃผ์์ฐฝ์ javascript:alert("Hello World!"); ์ ๋ ฅ ์ Hello World! ๋ผ๋ ๊ฒฝ๊ณ ์ฐฝ์ด ๋ธ
- ๋ธ๋ผ์ฐ์ ๋ก ํ์ฌ๊ธ alert๋ฅผ ํตํด ๊ฒฝ๊ณ ์ฐฝ์ด ๋จ๋๋ก ๋ช ๋ นํ๋ Interface
-
UI ๋?
- User Interface
- ์ฌ๋๊ณผ ์ปดํจํฐ ์ฌ์ด์ ๋๋ฉด ์ ์ / ์ค๊ณ์ ์ญํ
-
์ผ๋ฐ ์ฌ์ฉ์๋ UI๋ฅผ ํตํด, ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ํตํด API๋ฅผ ์ด์ฉํ์ฌ ์กฐ์ํจ
-
๋ฌธ์์ด์์ ํน์ ํ ๋ฌธ์๋ฅผ ์ฐพ์๋ด๋ ๋๊ตฌ
-
์ปดํ์ผ : ๋ฌธ์๋ฅผ ํ๋จํ๊ฑฐ๋, ํจํด์ ์ฐพ๋ ๊ฒ
-
ํจํด ์ฐพ๋ ๋ฒ 2๊ฐ์ง
1. let pattern = /a/; // ์ฌ๋์ ์ฌ์ด์ a๊ฐ ์ฐพ๊ณ ์ ํ๋ ํจํด 2. let pattern = new RegExp('a'); // ์ ์ ๊ทํํ์ ๊ฐ์ฒด์ ์ฐพ์ ํจํด์ ๋ฃ๊ธฐ
-
-
์คํ : ์ด๋ ํ ์์ ์ ๊ตฌ์ฒด์ ์ผ๋ก ํ๋ ๊ฒ
-
DOM์ ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model) ์ ์ฝ์๋ก js๊ฐ ์น ํ์ด์ง ์ฝํ ์ธ ์ ์ ๊ทผํ ๋ ์ฌ์ฉ
-
DOM tree : ์น ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ์ฝ์ ๋ ์๋ฆฌ๋จผํธ๋ฅผ ๋ง์น ๋๋ฌด์ ๊ฐ์ ๊ตฌ์กฐ๋ก ํด์
<html> โ โ <head> <body> โ โ โ <title> <h1> <p> -
์์ด๋๋ฅผ ์ฌ์ฉํ ์๋ฆฌ๋จผํธ ์๋ณํ๊ธฐ
// id ์์ฑ ๋ฃ๊ธฐ <h1 id="main-heading"> ์๋ ํ์ธ์! </h1> // document.getElementById() ํจ์๋ฅผ ์ด์ฉํด id ๊ฐ ๋ฐ์์ค๊ธฐ <script> let headingElement = document.getElementById("main-heading"); console.log(headingElement.innerHTML); // ๋ณ์.innerHTML ์ ํตํด ๋ด๋ถ ๋ฌธ์ ๊ฐ์ ธ์ด </script>
-
jQuery๋ $ ํจ์๋ฅผ ์ด์ฉํ์ฌ HTML ์๋ฆฌ๋จผํธ ์ ํ
- $ ํจ์๋ ์ ํ์ ๋ฌธ์์ด(selector string) ์ธ์๋ฅผ ํ๋ ์ ๋ฌ
<script src="https://code.jquery.com/jquery-3.4.1.min.js"> </script>
<body>
<h1 id="main-heading"> ์๋
ํ์ธ์! </h1>
<script>
let newHeadingText = prompt("์๋ก์ด ์ ๋ชฉ์ ์
๋ ฅํ์ธ์.");
$("#main-heading").text(newHeadingText);
</script>
</body><script>
for(let i=0; i<3; i++){
let hobby = prompt("์ทจ๋ฏธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!");
$("body").append("<p>"+ hobby +"</p>")
}
</script><script>
$("h1").text("ํ์ด๋์์").fadeOut(3000).fadeIn(2000);
// chaining : ํ ์ค์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๋ ๊ฒ
$("h2").text("์ฌ๋ผ์ด๋์
").slideUp(3000).slideDown(2000);
</script>- setTimeout(ํจ์, ๋ฐ๋ฆฌ์ด);
- ํจ์ : ๋ฐ๋ฆฌ์ด๊ฐ ์ง๋ ํ ํธ์ถํ ํจ์
<script>
let timeUp = function(){
alert("์๊ฐ ๋!");
};
setTimeout(timeUp, 3000);
clearTimeout(timeUp); // ํ์์์ ์ทจ์ํ๊ธฐ
</script>- setInterval(ํจ์, ๋ฐ๋ฆฌ์ด);
- ํจ์ : ์๊ฐ ๊ฐ๊ฒฉ ๋ฐ๋ฆฌ์ด๋ง๋ค ํธ์ถํ ํจ์
<script>
let counter = 1;
let printMessage = function(){
console.log("๊ธฐ๋ก์ ์์ํ ์ง "+ counter
+" ์ด ์ง๋ฌ์ต๋๋ค.");
counter++;
};
let intervalId = setInterval(printMessage, 1000);
clearInterval(intervalId); // interval ์ทจ์ํ๊ธฐ
</script><script>
let clickHandler = function(event){
console.log("Click! "+ event.pageX + " " + event.pageY);
// ๋๊ฐ x์ y๋ ํ๋ฉด์ ์ผ์ชฝ ์๋จ์ (0,0)์ผ๋ก ์ค์ ํ๊ณ ์์ํ๋ค.
};
$("h1").click(clickHandler);
</script><script src="https://code.jquery.com/jquery-3.4.1.min.js"> </script>
<script>
$("html").mousemove(function(event){ // mousemove(ํธ๋ค๋ฌ) ํจ์
$("#heading").offset({
left: event.pageX,
top : event.pageY
});
});
</script><script src="https://code.jquery.com/jquery-3.4.1.min.js"> </script>
<script>
let width = 400;
let height = 400;
let target = {
x:getRandomNumber(width);
y:getRandomNumber(height); // ์์ ์๋ง๋ค ํ๊ฒ ์์น ๋๋ค๊ฐ
}
let getDistance = function(event, target){
var diffX = event.offsetX - target.X; // offsetX,Y : ํด๋ฆญ ์์น ์ขํ ์ป๊ธฐ
var diffY = event.offsetY - target.Y;
return Math.sqrt((diffX * diffX) + (diffY * diffY));
};
</script>