commit
bfacc9df11
@ -1,18 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript</title>
|
||||
<title>30DaysOfJavaScript</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:03 Day</h1>
|
||||
<h2>Introduction</h2>
|
||||
<button onclick="alert('Welcome to 30DaysOfJavaScript!');">Click Me</button>
|
||||
<script src="./helloworld.js"></script>
|
||||
<script src="./introduction.js"></script>
|
||||
<script src="./varaible.js"></script>
|
||||
<script src="./main.js"></script>
|
||||
<h1>30DaysOfJavaScript:03 Day</h1>
|
||||
<h2>Introduction</h2>
|
||||
<button onclick="alert('Welcome to 30DaysOfJavaScript!');">Click Me</button>
|
||||
<script src="./helloworld.js"></script>
|
||||
<script src="./introduction.js"></script>
|
||||
<script src="./variable.js"></script>
|
||||
<script src="./main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript</title>
|
||||
<title>30DaysOfJavaScript</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- import your scripts here -->
|
||||
<script src="./scripts/main.js"></script>
|
||||
<!-- import your scripts here -->
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:05 Day </title>
|
||||
<title>30DaysOfJavaScript:05 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:05 Day</h1>
|
||||
<h2>Arrays</h2>
|
||||
|
||||
<script src="./data/countries.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<h1>30DaysOfJavaScript:05 Day</h1>
|
||||
<h2>Arrays</h2>
|
||||
|
||||
<script src="./data/countries.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:06 Day </title>
|
||||
<title>30DaysOfJavaScript:06 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:06 Day</h1>
|
||||
<h2>Loops</h2>
|
||||
|
||||
<script src="./data/countries.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<h1>30DaysOfJavaScript:06 Day</h1>
|
||||
<h2>Loops</h2>
|
||||
|
||||
<script src="./data/countries.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:07 Day </title>
|
||||
<title>30DaysOfJavaScript:07 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:07 Day</h1>
|
||||
<h2>Functions</h2>
|
||||
|
||||
<script src="./data/countries.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<h1>30DaysOfJavaScript:07 Day</h1>
|
||||
<h2>Functions</h2>
|
||||
|
||||
<script src="./data/countries.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:08 Day </title>
|
||||
<title>30DaysOfJavaScript:08 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:08 Day</h1>
|
||||
<h2>Objects</h2>
|
||||
<h1>30DaysOfJavaScript:08 Day</h1>
|
||||
<h2>Objects</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:09 Day </title>
|
||||
<title>30DaysOfJavaScript:09 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:09 Day</h1>
|
||||
<h2>Functional Programming</h2>
|
||||
<h1>30DaysOfJavaScript:09 Day</h1>
|
||||
<h2>Functional Programming</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:13 Day </title>
|
||||
<title>30DaysOfJavaScript:13 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:13 Day</h1>
|
||||
<h2>Console Object Methods</h2>
|
||||
<h1>30DaysOfJavaScript:13 Day</h1>
|
||||
<h2>Console Object Methods</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:12 Day </title>
|
||||
<title>30DaysOfJavaScript:12 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:14 Day</h1>
|
||||
<h2>DOM</h2>
|
||||
<h1>30DaysOfJavaScript:14 Day</h1>
|
||||
<h2>DOM</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:15 Day </title>
|
||||
<title>30DaysOfJavaScript:15 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:15 Day</h1>
|
||||
<h2>Classes</h2>
|
||||
<h1>30DaysOfJavaScript:15 Day</h1>
|
||||
<h2>Classes</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:16 Day </title>
|
||||
<title>30DaysOfJavaScript:16 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:16 Day</h1>
|
||||
<h2>JSON</h2>
|
||||
<h1>30DaysOfJavaScript:16 Day</h1>
|
||||
<h2>JSON</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:17 Day </title>
|
||||
<title>30DaysOfJavaScript:17 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:17 Day</h1>
|
||||
<h2>Web Storage</h2>
|
||||
<h1>30DaysOfJavaScript:17 Day</h1>
|
||||
<h2>Web Storage</h2>
|
||||
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:18 Day </title>
|
||||
<title>30DaysOfJavaScript:18 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:18 Day</h1>
|
||||
<h2>Promises</h2>
|
||||
<h1>30DaysOfJavaScript:18 Day</h1>
|
||||
<h2>Promises</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:19 Day </title>
|
||||
<title>30DaysOfJavaScript:19 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:19 Day</h1>
|
||||
<h2>Writing Clean Code</h2>
|
||||
<h1>30DaysOfJavaScript:19 Day</h1>
|
||||
<h2>Writing Clean Code</h2>
|
||||
|
||||
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:20 Day </title>
|
||||
<title>30DaysOfJavaScript:20 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:20 Day</h1>
|
||||
<h2>Writing clean code</h2>
|
||||
<h1>30DaysOfJavaScript:20 Day</h1>
|
||||
<h2>Writing clean code</h2>
|
||||
|
||||
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,25 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:21 Day </title>
|
||||
<title>30DaysOfJavaScript:21 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<h1>Asabeneh Yetayeh challenges in 2020</h1>
|
||||
<h2>30DaysOfJavaScript Challenge</h2>
|
||||
<ul>
|
||||
<li>30DaysOfPython Challenge Done</li>
|
||||
<li>30DaysOfJavaScript Challenge Ongoing</li>
|
||||
<li>30DaysOfReact Challenge Coming</li>
|
||||
<li>30DaysOfFullStack Challenge Coming</li>
|
||||
<li>30DaysOfDataAnalysis Challenge Coming</li>
|
||||
<li>30DaysOfReactNative Challenge Coming</li>
|
||||
<li>30DaysOfMachineLearning Challenge Coming</li>
|
||||
</ul>
|
||||
</div>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<div class="wrapper">
|
||||
<h1>Asabeneh Yetayeh challenges in 2020</h1>
|
||||
<h2>30DaysOfJavaScript Challenge</h2>
|
||||
<ul>
|
||||
<li>30DaysOfPython Challenge Done</li>
|
||||
<li>30DaysOfJavaScript Challenge Ongoing</li>
|
||||
<li>30DaysOfReact Challenge Coming</li>
|
||||
<li>30DaysOfFullStack Challenge Coming</li>
|
||||
<li>30DaysOfDataAnalysis Challenge Coming</li>
|
||||
<li>30DaysOfReactNative Challenge Coming</li>
|
||||
<li>30DaysOfMachineLearning Challenge Coming</li>
|
||||
</ul>
|
||||
</div>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,21 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:22 Day: Number Generator </title>
|
||||
<title>30DaysOfJavaScript:22 Day: Number Generator </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Number Generator</h1>
|
||||
<h2>30DaysOfJavaScript:DOM Day 2</h2>
|
||||
<h3>Author: Asabeneh Yetayeh</h3>
|
||||
<div class="wrapper">
|
||||
<h1>Number Generator</h1>
|
||||
<h2>30DaysOfJavaScript:DOM Day 2</h2>
|
||||
<h3>Author: Asabeneh Yetayeh</h3>
|
||||
<div class="wrapper">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,21 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:23 Day: Number Generator </title>
|
||||
<title>30DaysOfJavaScript:23 Day: Number Generator </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Number Generator</h1>
|
||||
<h2>30DaysOfJavaScript:DOM Day 2</h2>
|
||||
<h3>Author: Asabeneh Yetayeh</h3>
|
||||
<div class="wrapper">
|
||||
<h1>Number Generator</h1>
|
||||
<h2>30DaysOfJavaScript:DOM Day 2</h2>
|
||||
<h3>Author: Asabeneh Yetayeh</h3>
|
||||
<div class="wrapper">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:23 Day: Keyboard Key </title>
|
||||
<title>30DaysOfJavaScript:23 Day: Keyboard Key </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,39 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Solar System: Document Object Model:30 Days Of JavaScript</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,500,600,700&display=swap" rel="stylesheet">
|
||||
<title>Solar System: Document Object Model:30 Days Of JavaScript</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,500,600,700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<h1>Calculate a weight of an object on a planet</h1>
|
||||
<header>
|
||||
<h1>Calculate a weight of an object on a planet</h1>
|
||||
|
||||
<input type="text" id="mass" placeholder="Mass in Kilogram" />
|
||||
<select>
|
||||
<option value='none'>--select planet-- </option>
|
||||
</select>
|
||||
<button>Calculate weight</button>
|
||||
<input type="text" id="mass" placeholder="Mass in Kilogram" />
|
||||
<select>
|
||||
<option value='none'>--select planet-- </option>
|
||||
</select>
|
||||
<button>Calculate weight</button>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
<div class="flex-container">
|
||||
<div class="flex-item image">
|
||||
<img src='./images/earth.png' class="planet-image" />
|
||||
</div>
|
||||
<div class="flex-item description"></div>
|
||||
</header>
|
||||
<main>
|
||||
<div class="flex-container">
|
||||
<div class="flex-item image">
|
||||
<img src='./images/earth.png' class="planet-image" />
|
||||
</div>
|
||||
<div class="flex-item description"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
</main>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
|
||||
<script src="./data/countries.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
<title>30DaysOfJavaScript:11 Day </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
<h1>30DaysOfJavaScript:11 Day</h1>
|
||||
<h2>Destructuring and Spread</h2>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>30DaysOfJavaScript: Day 29 - Project 2 </title>
|
||||
<title>30DaysOfJavaScript: Day 29 - Project 2 </title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
<script src="./data/countries_data.js"></script>
|
||||
<script src="./scripts/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1 @@
|
||||
console.log('Salam, dünya!')
|
@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>30 Günlük JavaScript dərsləri</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>30 Günlük JavaScript:01 Gün</h1>
|
||||
<h2>Giriş</h2>
|
||||
<button onclick="alert('30 Günlük JavaScript dərslərinə xoş gəlmişsiniz');">Kliklə</button>
|
||||
<script src="helloworld.js"></script>
|
||||
<script src="introduction.js"></script>
|
||||
<script src="variables.js"></script>
|
||||
<script src="main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1 @@
|
||||
console.log('30 Günlük JS dərsləri')
|
@ -0,0 +1,637 @@
|
||||
# 자바스크립트 30일 정복 😎
|
||||
|
||||
| # Day | Topics |
|
||||
| ----- | :--------------------------------------------------------------------------------------------------------------------------------------: |
|
||||
| 01 | [소개](./readMe.md) |
|
||||
| 02 | [자료형](./02_Day_Data_types/02_day_data_types.md) |
|
||||
| 03 | [불리언, 연산자, 날짜](./03_Day_Booleans_operators_date/03_booleans_operators_date.md) |
|
||||
| 04 | [조건문](./04_Day_Conditionals/04_day_conditionals.md) |
|
||||
| 05 | [배열](./05_Day_Arrays/05_day_arrays.md) |
|
||||
| 06 | [반복문](./06_Day_Loops/06_day_loops.md) |
|
||||
| 07 | [함수](./07_Day_Functions/07_day_functions.md) |
|
||||
| 08 | [객체](./08_Day_Objects/08_day_objects.md) |
|
||||
| 09 | [고차 함수](./09_Day_Higher_order_functions/09_day_higher_order_functions.md) |
|
||||
| 10 | [집합과 맵](./10_Day_Sets_and_Maps/10_day_Sets_and_Maps.md) |
|
||||
| 11 | [구조 분해 할당과 전개 연산자](./11_Day_Destructuring_and_spreading/11_day_destructuring_and_spreading.md) |
|
||||
| 12 | [정규표현식](./12_Day_Regular_expressions/12_day_regular_expressions.md) |
|
||||
| 13 | [콘솔 객체 메서드](./13_Day_Console_object_methods/13_day_console_object_methods.md) |
|
||||
| 14 | [오류 핸들링](./14_Day_Error_handling/14_day_error_handling.md) |
|
||||
| 15 | [클래스](./15_Day_Classes/15_day_classes.md) |
|
||||
| 16 | [JSON](./16_Day_JSON/16_day_json.md) |
|
||||
| 17 | [웹 저장소](./17_Day_Web_storages/17_day_web_storages.md) |
|
||||
| 18 | [프로미스](./18_Day_Promises/18_day_promises.md) |
|
||||
| 19 | [클로져](./19_Day_Closures/19_day_closures.md) |
|
||||
| 20 | [클린 코드 작성법](./20_Day_Writing_clean_codes/20_day_writing_clean_codes.md) |
|
||||
| 21 | [DOM](./21_Day_DOM/21_day_dom.md) |
|
||||
| 22 | [DOM 객체 조작](./22_Day_Manipulating_DOM_object/22_day_manipulating_DOM_object.md) |
|
||||
| 23 | [이벤트 리스너](./23_Day_Event_listeners/23_day_event_listeners.md) |
|
||||
| 24 | [미니 프로젝트: 태양계](./24_Day_Project_solar_system/24_day_project_solar_system.md) |
|
||||
| 25 | [미니 프로젝트: 세계 도시 데이터 시각화 1](./25_Day_World_countries_data_visualization_1/25_day_world_countries_data_visualization_1.md) |
|
||||
| 26 | [미니 프로젝트: 세계 도시 데이터 시각화 2](./26_Day_World_countries_data_visualization_2/26_day_world_countries_data_visualization_2.md) |
|
||||
| 27 | [미니 프로젝트: 포트폴리오](./27_Day_Mini_project_portfolio/27_day_mini_project_portfolio.md) |
|
||||
| 28 | [미니 프로젝트: 리더보드](./28_Day_Mini_project_leaderboard/28_day_mini_project_leaderboard.md) |
|
||||
| 29 | [미니 프로젝트: 캐릭터 움직이기](./29_Day_Mini_project_animating_characters/29_day_mini_project_animating_characters.md) |
|
||||
| 30 | [최종 프로젝트](./30_Day_Mini_project_final/30_day_mini_project_final.md) |
|
||||
|
||||
🇬🇧 [English](../readMe.md)
|
||||
🇪🇸 [Spanish](../Spanish/readme.md)
|
||||
🇷🇺 [Russian](../RU/README.md)
|
||||
|
||||
[2일차 >>](./02_Day_Data_types/02_day_data_types.md)
|
||||
|
||||

|
||||
|
||||
- [자바스크립트 30일 정복](#30-days-of-javascript)
|
||||
- [📔 1일차](#📔-1일차)
|
||||
- [소개](#소개)
|
||||
- [요구 사항](#요구사항)
|
||||
- [설정](#설정)
|
||||
- [Node.js 설치](#Node.js-설치)
|
||||
- [브라우저](#브라우저)
|
||||
- [구글 크롬 설치](#구글-크롬-설치)
|
||||
- [구글 크롬 콘솔창 열기](#구글-크롬-콘솔창-열기)
|
||||
- [콘솔창에서 코드 작성해 보기](#콘솔창에서-코드-작성해-보기)
|
||||
- [Console.log로 출력하기](#Console.log로-출력하기)
|
||||
- [Console.log로 여러 인자 출력하기](#Console.log로-여러-인자-출력하기)
|
||||
- [주석](#주석)
|
||||
- [문법](#문법)
|
||||
- [산술](#산술)
|
||||
- [코드 편집기](#코드-편집기)
|
||||
- [Visual Studio Code 설치](#Visual-Studio-Code-설치)
|
||||
- [Visual Studio Code 사용법](#Visual-Studio-Code-사용법)
|
||||
- [웹 페이지에서 자바스크립트 코드 적용](#웹-페이지에서-자바스크립트-코드-적용)
|
||||
- [인라인 자바스크립트](#인라인-자바스크립트)
|
||||
- [내부 자바스크립트](#내부-자바스크립트)
|
||||
- [외부 자바스크립트](#외부-자바스크립트)
|
||||
- [여러 외부 자바스크립트](#여러-외부-자바스크립트)
|
||||
- [자료형 소개](#자료형-소개)
|
||||
- [숫자](#숫자)
|
||||
- [문자열](#문자열)
|
||||
- [불리언](#불리언)
|
||||
- [Undefined](#Undefined)
|
||||
- [Null](#Null)
|
||||
- [자료형 확인하기](#자료형-확인하기)
|
||||
- [주석을 다시](#주석을-다시)
|
||||
- [변수](#변수)
|
||||
- [💻 1일차: 실습](#-1일차-실습)
|
||||
|
||||
# 📔 1일차
|
||||
|
||||
## 소개
|
||||
|
||||
자바스크립트 30일 정복 프로그래밍 챌린지에 참여 결정하신 것을 축하드립니다. 이번 챌린지에서는 자바스크립트 프로그래머가 되기 위해서 필요한 모든 것들과, 일반적인 프로그래밍에 대한 개념을 다룹니다. 해당 챌린지를 모두 완료하셨다면, 30DaysOfJavaScript 프로그래밍 챌린지 완료 인증서를 받게 됩니다. 도움이 필요하거나, 다른 사람을 도와주고 싶은 경우 [텔레그램 그룹](https://t.me/ThirtyDaysOfJavaScript)에 연락을 주세요.
|
||||
|
||||
**자바스크립트 30일 정복 챌린지**는 초보자와 숙련된 자바스크립트 개발자를 위한 지침서입니다. 자바스크립트에 오신 것을 환영합니다. 자바스크립트는 웹을 다루는 언어입니다. 저는 여러분들을 가르치고 사용하는 것을 즐깁니다. 여러분도 그렇게 되셨으면 좋겠습니다.
|
||||
|
||||
자바스크립트 30일 정복 챌린지를 단계별로 진행하면서, 인류 역사상 가장 인기있는 자바스크립트를 배우게 될 것입니다.
|
||||
자바스크립트는 **_상호작용을 하는 웹사이트를 만들거나, 모바일 애플리케이션 혹은 데스크탑 애플리케이션, 게임_**을 만드는 데에 사용이 됩니다. 요즈음 자바스크립트는 **_머신러닝과 AI_**를 하는데에도 사용이 됩니다. **_자바스크립트(JS)_**는 최근 몇 년간 인기가 상승하여 선두를 달리고 있습니다. 실제로 깃헙에서 6년동안 가장 많이 사용되고 있습니다.
|
||||
|
||||
## 요구사항
|
||||
|
||||
프로그래밍에 대한 선수 지식은 해당 챌린지에서 필요하지 않습니다. 대신 아래에 대한 요구사항이 필요합니다.
|
||||
|
||||
1. 열정
|
||||
2. 컴퓨터
|
||||
3. 인터넷
|
||||
4. 브라우저
|
||||
5. 코드 편집기
|
||||
|
||||
## 설정
|
||||
|
||||
저는 여러분이 개발자, 컴퓨터, 인터넷이 되기 위해서 강한 욕구와 동기부여가 있다고 믿습니다. 만약 이런 것들을 가지고 있다면, 해당 챌린지를 시작할 수 있습니다.
|
||||
|
||||
### Node.js 설치
|
||||
|
||||
여러분은 Node.js가 당장은 필요 없지만, 나중을 위해 설치가 필요합니다. [해당 사이트](https://nodejs.org/en/)에서 설치를 진행해 주세요.
|
||||
|
||||

|
||||
|
||||
다운로드가 끝이 나면 파일을 더블 클릭해서 열고 설치합니다.
|
||||
|
||||

|
||||
|
||||
우리의 로컬 컴퓨터에 터미널 창을 열거나, 명령 프롬포트를 통해서 노드가 설치되어 있는지 알 수 있습니다.
|
||||
|
||||
```sh
|
||||
asabeneh $ node -v
|
||||
v12.14.0
|
||||
```
|
||||
|
||||
해당 챌린지을 제작할 때에는 Node 12.14.0 버전을 사용했으나, 현재는 Node 14.17.6 버전을 권장하고 있습니다.
|
||||
|
||||
### 브라우저
|
||||
|
||||
브라우저는 많은 것들이 존재합니다. 그러나, 우리는 구글 크롬을 강력하게 권장합니다.
|
||||
|
||||
#### 구글 크롬 설치
|
||||
|
||||
[구글 크롬](https://www.google.com/chrome/)이 설치되어있지 않다면, 설치를 해 주세요. 우리는 브라우저 콘솔창에서 간단한 자바스크립트 코드를 작성할 수 있습니다. 그러나 우리는 애플리케이션을 개발하기 위해 브라우저 콘솔을 사용하지 않습니다.
|
||||
|
||||

|
||||
|
||||
#### 구글 크롬 콘솔창 열기
|
||||
|
||||
브라우저 오른쪽 상단에 있는 점 3개를 클릭하고 **추가 도구 -> 개발자 도구**를 선택하거나 바로 가기 키를 사용하여 구글 크롬 콘솔창을 열 수 있습니다. 저는 단축키 사용을 선호합니다.
|
||||
|
||||

|
||||
|
||||
콘솔창을 열기위한 단축키는 아래와 같습니다.
|
||||
|
||||
```sh
|
||||
Mac
|
||||
Command+Option+J
|
||||
|
||||
Windows/Linux:
|
||||
Ctl+Shift+J
|
||||
```
|
||||
|
||||

|
||||
|
||||
콘솔창을 열고 나서, 표시된 버튼을 경험해 보세요. 우리는 콘솔창에서 많은 시간을 보내게 될 것 입니다. 콘솔창은 자바스크립트 코드가 저장되는 위치입니다. 구글 크롬의 콘솔창의 V8 엔진은 자바스크립트 코드를 기계 코드로 변경시켜줍니다.
|
||||
|
||||
콘솔창에서 간단한 자바스크립트 코드 예제를 적어봅시다.
|
||||
|
||||

|
||||
|
||||
#### 콘솔창에서 코드 작성해 보기
|
||||
|
||||
우리는 구글 크롬이 아니더라도, 콘솔창에서 간단한 코드를 작성해볼 수 있습니다. 그러나 이 챌린지를 위해서는 오직 구글 크롬 콘솔창에만 집중합시다. 콘솔창을 열어 주세요.
|
||||
|
||||
```sh
|
||||
Mac
|
||||
Command+Option+I
|
||||
|
||||
Windows:
|
||||
Ctl+Shift+I
|
||||
```
|
||||
|
||||
##### Console.log로 출력하기
|
||||
|
||||
우리의 첫 번째 코드는, 내장되어있는 함수인 **console.log()**입니다. 인수로 입력 데이터를 전달하면, 해당 함수가 결과물을 콘솔창에 표시합니다. 우리는 console.log() 함수에 'Hello, World'를 인풋으로 전달을 해 봅시다.
|
||||
|
||||
```js
|
||||
console.log('Hello, World!');
|
||||
```
|
||||
|
||||
##### Console.log로 여러 인자 출력하기
|
||||
|
||||
**console.log()** 함수는 반점(comma)로 여러개의 인자를 구분할 수 있습니다. 문법은 다음과 같습니다. **console.log(param1, param2, param3)**
|
||||
|
||||

|
||||
|
||||
```js
|
||||
console.log('Hello', 'World', '!');
|
||||
console.log('HAPPY', 'NEW', 'YEAR', 2020);
|
||||
console.log('Welcome', 'to', 30, 'Days', 'Of', 'JavaScript');
|
||||
```
|
||||
|
||||
위의 예시 코드와 같이, *console.log()*함수는 여러 인자를 사용할 수 있습니다.
|
||||
|
||||
축하드립니다! 당신은 *console.log()*를 이용해서 첫 자바스크립트 코드를 작성했습니다.
|
||||
|
||||
##### 주석
|
||||
|
||||
우리는 우리의 코드에 주석을 추가합니다. 주석은 코드의 가독성과, 코드의 설명을 남기는데에 매우 중요합니다. 자바스크립트는 코드 내부에 주석을 실행하지 않습니다. 자바스크립트에서 //로 시작하는 것은 주석이며, /\*로 시작해서 \*/로 닫히는 것 또한 주석이 될 수 있습니다.
|
||||
|
||||
**한 줄 주석 예시**
|
||||
|
||||
// 첫 번째 주석입니다.
|
||||
// 두 번째 주석입니다.
|
||||
// 한 줄 주석입니다.
|
||||
|
||||
**여러 줄 주석 예시**
|
||||
|
||||
/_
|
||||
여러 줄 주석할 때 사용합니다.
|
||||
여러줄 주석은 여러 줄을 입력할 수 있습니다.
|
||||
자바스크립트는 웹을 다루는 프로그래밍 언어입니다.
|
||||
_/
|
||||
|
||||
##### 문법
|
||||
|
||||
프로그래밍 언어는 인간의 언어와 유사합니다. 영어 혹은 다른 모든 언어는 단어부터 시작해서 문법, 문장, 복잡한 문장을 사용하고 의미있는 메시지들을 전달합니다. 영어에서의 구문의 의미는 언어에서 잘 만들어진 문장을 만들기 위한 단어와 문법의 배열입니다. 문법의 기술적인 정의는 컴퓨터 언어에서의 문장 구조입니다. 프로그래밍 언어에는 문법이 있습니다. 자바스크립트와, 다른 프로그래밍 언어는 문법을 가지고 있습니다. 우리는 자바스크립트가 이해할 수 있는 문법을 작성하지 않는다면, 해당 코드는 여러 가지 오류를 일으킬 것입니다. 오류에 대한 다양한 종류는 다음에 살펴봅시다. 지금부터는 간단한 문법 오류를 살펴봅시다.
|
||||
|
||||

|
||||
|
||||
고의적으로 실수를 저질렀습니다. 그 결과 콘솔창은 구문 오류를 발생시키고 있습니다. 실제로 이런 구문은 매우 유익합니다. 어떤 실수가 일어났는지 알려줍니다. 오류 피드백에 대한 가이드라인을 읽으면서 우리는 구문을 수정하고 문제를 해결할 수 있습니다. 프로그램으로부터 발생한 오류를 구별하고 제거하는 과정을 디버깅이라고 말합니다. 아래 오류를 수정해 봅시다:
|
||||
|
||||
```js
|
||||
console.log('Hello, World!');
|
||||
console.log('Hello, World!');
|
||||
```
|
||||
|
||||
지금까지, 우리는 _console.log()_ 함수를 통해서 문자열을 표시하는 방법을 다루었습니다. _console.log()_ 를 이용해서 문자열을 입력하려면 작은 따옴표나, 큰 따옴표 혹은 백틱 따옴표안에 들어가있어야 합니다.
|
||||
|
||||
**예시:**
|
||||
|
||||
```js
|
||||
console.log('Hello, World!');
|
||||
console.log('Hello, World!');
|
||||
console.log(`Hello, World!`);
|
||||
```
|
||||
|
||||
#### 산술
|
||||
|
||||
이번에는 구글 크롬 콘솔창에서 숫자 자료형을 _console.log()_ 로 작성하는 법에 대해서 공부해 봅시다.
|
||||
|
||||
문자열외에도 자바스크립트를 이용해서 수학적인 계산도 가능합니다. 다음과 같은 간단한 계산을 해 봅시다.
|
||||
콘솔창은 **_console.log()_** 함수 없이 직접 인수를 사용할 수 있습니다. 그러나 앞선 말한 것은 함수 사용이 필수적인 텍스트 편집기에서 일어나기 때문에, 맨 앞 부분에 포함되어 있습니다. 콘솔창을 통해서 명령어들을 가지고 놀 수 있습니다.
|
||||
|
||||

|
||||
|
||||
```js
|
||||
console.log(2 + 3); // 덧셈
|
||||
console.log(3 - 2); // 뺄셈
|
||||
console.log(2 * 3); // 곱셈
|
||||
console.log(3 / 2); // 나눗셈
|
||||
console.log(3 % 2); // 나눗셈 - 나머지 구하기
|
||||
console.log(3 ** 2); // 제곱 3 ** 2 == 3 * 3
|
||||
```
|
||||
|
||||
### 코드 편집기
|
||||
|
||||
우리는 브라우저의 콘솔에서 코드를 작성할 수 있지만, 큰 프로젝트에서는 바람직하지 않습니다. 실제 일하는 환경에서 개발자는 코드를 작성하기 위해서 서로 다른 코드 편집기를 사용합니다. 해당 자바스크립트 30일 정복 챌린지에서는 Visual Studio Code를 사용할 예정입니다.
|
||||
|
||||
#### Visual Studio Code 설치
|
||||
|
||||
Visual Studio Code는 매우 유명한 오픈 소스 텍스트 편집기입니다. 우리는 [Visual Studio Code](https://code.visualstudio.com/)를 다운로드 하는 것을 권장합니다. 그렇지만 다른 편집기가 마음에 든다면, 원하시는 대로 사용하면 됩니다.
|
||||
|
||||

|
||||
|
||||
Visual Studio Code를 설치했다면, 실제로 사용해 봅시다.
|
||||
|
||||
#### Visual Studio Code 사용법
|
||||
|
||||
Visual Studio Code의 아이콘을 더블 클릭해서 실행합시다. 실행이 되었다면 다음과 같은 화면을 볼 수 있습니다. 라벨이 적혀져있는 아이콘들을 사용해 봅시다.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 웹 페이지에서 자바스크립트 코드 적용
|
||||
|
||||
자바스크립트 코드는 웹 페이지에 세 가지 방법으로 적용할 수 있습니다:
|
||||
|
||||
- **인라인 자바스크립트**
|
||||
- **내부 자바스크립트**
|
||||
- **외부 자바스크립트**
|
||||
- **여러 외부 자바스크립트**
|
||||
|
||||
해당 섹션에서는 웹페이지에 자바스크립트 코드를 추가하는 각 방법을 다룰 예정입니다.
|
||||
|
||||
### 인라인 자바스크립트
|
||||
|
||||
데스크탑 등 아무 곳에서 30DaysOfJS라는 이름으로 프로젝트 폴더를 만들어 주세요. 만들고 나서, **_index.html_**을 생성합시다. 아래의 코드를 붙여넣고 크롬과 같은 브라우저로 열어봅시다.
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>30DaysOfScript:Inline Script</title>
|
||||
</head>
|
||||
<body>
|
||||
<button onclick="alert('Welcome to 30DaysOfJavaScript!')">
|
||||
클릭해 주세요
|
||||
</button>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
지금 첫 인라인 자바스크립트를 작성했습니다. 우리는 자바스크립트 내장 함수 _alert()_ 를 이용해서 경고 메시지가 뜨게할 수 있습니다.
|
||||
|
||||
### 내부 자바스크립트
|
||||
|
||||
내부 자바스크립트는 _head_ 혹은 _body_ 에서 작성할 수 있습니다. 그러나, HTML문서에서 body에 넣는 것이 더 선호 됩니다.
|
||||
첫 번째로, 페이지의 head부분에 작성해 봅시다.
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>30DaysOfScript:Internal Script</title>
|
||||
<script>
|
||||
console.log('Welcome to 30DaysOfJavaScript');
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
```
|
||||
|
||||
우리는 위와 같이 내부 자바스크립트를 사용합니다. 위에서 언급했듯이, body부분에 자바스크립트 코드를 넣는 것이 더 선호됩니다.
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>30DaysOfScript:Internal Script</title>
|
||||
</head>
|
||||
<body>
|
||||
<button onclick="alert('Welcome to 30DaysOfJavaScript!');">Click Me</button>
|
||||
<script>
|
||||
console.log('Welcome to 30DaysOfJavaScript');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
브라우저의 콘솔창을 열고 console.log()의 출력값을 확인해 봅시다.
|
||||
|
||||

|
||||
|
||||
### 외부 자바스크립트
|
||||
|
||||
내부 자바스크립트 방식과 유사하게, 외부 자바스크립트 방식은 header 혹은 body에 존재합니다. 그러나 이 역시 body에 적는 것이 선호됩니다.
|
||||
우선, .js 확장자를 가진 자바스크립트 파일을 생성해야 합니다. .js 확장자로 끝나는 모든 파일은 자바스크립트 파일입니다. introduction.js 프로젝트 폴더 내부에 파일을 생성하고 아래와 같은 코드를 넣어 봅시다. 그리고 본문 하단에 이 .js파일을 연결해 봅시다.
|
||||
|
||||
```js
|
||||
console.log('Welcome to 30DaysOfJavaScript');
|
||||
```
|
||||
|
||||
_head_ 에서의 외부 자바스크립트:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:External script</title>
|
||||
<script src="introduction.js"></script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
```
|
||||
|
||||
_body_ 에서의 외부 자바스크립트:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:External script</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- header 혹은 body 어디에 넣든 상관이 없습니다. -->
|
||||
<!-- 그러나, 여기에 넣는 것이 선호되는 편입니다. -->
|
||||
<script src="introduction.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
브라우저의 콘솔창을 열고 console.log()의 출력값을 확인해 봅시다.
|
||||
|
||||
### 여러 외부 자바스크립트
|
||||
|
||||
우리는 한 개의 웹 페이지에 여러 자바스크립트 파일을 연결할 수 있습니다.
|
||||
프로젝트 폴더 내에 helloworld.js 파일을 생성하고 아래 코드를 작성해 봅시다.
|
||||
|
||||
```js
|
||||
console.log('Hello, World!');
|
||||
```
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Multiple External Scripts</title>
|
||||
</head>
|
||||
<body>
|
||||
<script src="./helloworld.js"></script>
|
||||
<script src="./introduction.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
_main.js 파일은 다른 모든 자바스크립트 파일 아래에 있어야 합니다_ 이것은 매우 중요합니다.
|
||||
|
||||

|
||||
|
||||
## 자료형 소개
|
||||
|
||||
자바스크립트와 다른 프로그래밍 언어는 여러 자료형들이 있습니다. 다음은 자바스크립트 기본 자료형입니다: _문자열, 숫자, 불리언, undefined, null_ 추가로 _Symbol_ 이 있습니다.
|
||||
|
||||
### 숫자
|
||||
|
||||
- 정수 자료형: 정수 (음수, 0, 양수) 숫자
|
||||
예시:
|
||||
... -3, -2, -1, 0, 1, 2, 3 ...
|
||||
- 실수 자료형: 소수 숫자
|
||||
예시
|
||||
... -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 ...
|
||||
|
||||
### 문자열
|
||||
|
||||
작은 따옴표, 큰 따옴표, 백틱 따옴표 사이에 있는 한 개 혹은 그 이상의 모음입니다.
|
||||
|
||||
**예시:**
|
||||
|
||||
```js
|
||||
'Asabeneh';
|
||||
'Finland';
|
||||
'JavaScript is a beautiful programming language';
|
||||
'I love teaching';
|
||||
'I hope you are enjoying the first day'`We can also create a string using a backtick`;
|
||||
('A string could be just as small as one character as big as many pages');
|
||||
```
|
||||
|
||||
### 불리언
|
||||
|
||||
불리언 자료형은 참값과 거짓값이 있습니다. 모든 비교는 참 혹은 거짓값을 갖는 불리언 값을 반환합니다.
|
||||
|
||||
불리언 자료형은 참 혹은 거짓입니다.
|
||||
|
||||
**예시:**
|
||||
|
||||
```js
|
||||
true; // 불이 켜져있다면 값은 true입니다.
|
||||
false; // 불이 꺼져있다면 값은 true입니다.
|
||||
```
|
||||
|
||||
### Undefined
|
||||
|
||||
자바스크립트에서 변수에 아무 값도 할당하지 않으면, 변수는 undefined값을 가집니다. 덧붙여 얘가하면 함수가 아무 값도 반환하지 않으면, 그것은 undefined를 반환합니다.
|
||||
|
||||
```js
|
||||
let firstName;
|
||||
console.log(firstName); // undefined이다. 할당이 되지 않았기 때문이다.
|
||||
```
|
||||
|
||||
### Null
|
||||
|
||||
자바스크립트에서 값이 비어있으면 변수는 null값을 가집니다.
|
||||
|
||||
```js
|
||||
let emptyValue = null;
|
||||
```
|
||||
|
||||
## 자료형 확인하기
|
||||
|
||||
특정 변수의 자료형을 확인하고 싶으면 **typeof** 연산자를 사용하면 됩니다. 예시를 확인해 봅시다.
|
||||
|
||||
```js
|
||||
console.log(typeof 'Asabeneh'); // 문자열
|
||||
console.log(typeof 5); // 숫자
|
||||
console.log(typeof true); // 불리언
|
||||
console.log(typeof null); // null
|
||||
console.log(typeof undefined); // undefined
|
||||
```
|
||||
|
||||
## 주석을 다시
|
||||
|
||||
자바스크립트는 다른 프로그래밍언어처럼 주석을 달 수 있던 것을 기억해 봅시다. 주석은 가독성을 위해서 매우 중요합니다.
|
||||
주석에는 두 방법이 있습니다.
|
||||
|
||||
- _한 줄 주석_
|
||||
- _여러 줄 주석_
|
||||
|
||||
한 줄 주석:
|
||||
|
||||
```js
|
||||
// 한 줄 주석으로 코드 자체에 주석 달기
|
||||
// let firstName = 'Asabeneh'; 한 줄 주석
|
||||
// let lastName = 'Yetayeh'; 한 줄 주석
|
||||
```
|
||||
|
||||
여러 줄 주석:
|
||||
|
||||
```js
|
||||
/*
|
||||
let location = 'Helsinki';
|
||||
let age = 100;
|
||||
let isMarried = true;
|
||||
This is a Multiple line comment
|
||||
*/
|
||||
```
|
||||
|
||||
## 변수
|
||||
|
||||
변수는 데이터의 _컨테이너_ 입니다. 변수는 메모리 공간에 데이터를 저장할 때 사용합니다. 우리가 변수를 선언하면, 메모리가 할당이 됩니다. 변수에 값을 할당하면은, 메모리 주소는 데이터로 채워집니다. 변수를 선언하기 위해서는 _var_, _let_, _const_ 키워드를 사용합니다.
|
||||
|
||||
프로그램이 돌아가면서 변수의 값이 바뀌는 경우, _let_ 키워드를 사용합니다. 만약 변수의 값이 아예 바뀌지 않을 것이라면, _const_ 키워드를 사용합니다. 예로들어 PI, 국가명, 중력은 변하지 않으므로 _const_ 를 사용합니다. 우리는 이 챌린지에서 _var_ 키워드는 사용하지 않을 것이고, 사용하지 않는 것을 권장합니다. 그것은 많은 약점을 가지고 있고, 오류를 발생하기 쉬운 방법입니다. 각 키워드의 자세한 사항, 다른 범위(scope)에서 다음에 알아봅시다. 지금은 위에서 언급한 부분이면 충분합니다.
|
||||
|
||||
유효한 자바스크립트 변수 이름을 위해서는 아래와 같은 규칙을 따라야합니다:
|
||||
|
||||
- 숫자로 시작하지 않습니다.
|
||||
- 달러 기호($), 밑줄(\_)을 제외한 특수문자를 사용하면 안됩니다.
|
||||
- camelCase 네이밍 컨벤션을 따릅니다.
|
||||
- 변수 이름 단어 사이에 공백이 없어야 합니다.
|
||||
|
||||
자바스크립트 변수를 올바르게 이름짓는 법을 예시를 통해 확인해 봅시다.
|
||||
|
||||
```js
|
||||
firstName;
|
||||
lastName;
|
||||
country;
|
||||
city;
|
||||
capitalCity;
|
||||
age;
|
||||
isMarried;
|
||||
|
||||
first_name;
|
||||
last_name;
|
||||
is_married;
|
||||
capital_city;
|
||||
|
||||
num1;
|
||||
num_1;
|
||||
_num_1;
|
||||
$num1;
|
||||
year2020;
|
||||
year_2020;
|
||||
```
|
||||
|
||||
첫 번째와 두 번째 변수들은 camelCase 네이밍컨벤션을 따릅니다. 우리 자료에서는 camelCase를 사용할 예정입니다.
|
||||
|
||||
다음은 적절하지 못한 예시입니다:
|
||||
|
||||
```sh
|
||||
first-name
|
||||
1_num
|
||||
num_#_1
|
||||
```
|
||||
|
||||
서로 다른 유형의 데이터로 변수를 선언합시다. 변수를 선언하렴녀 _let_, _const_ 키워드를 사용합니다. 변수 이름 뒤에 등호와 값을 사용해 봅시다.
|
||||
|
||||
```js
|
||||
// Syntax
|
||||
let nameOfVariable = value;
|
||||
```
|
||||
|
||||
**Examples of declared variables**
|
||||
|
||||
```js
|
||||
// 다른 자료형을 가지고 있는 변수 선언
|
||||
let firstName = 'Asabeneh'; // 이름
|
||||
let lastName = 'Yetayeh'; // 성
|
||||
let country = 'Finland'; // 나라
|
||||
let city = 'Helsinki'; // 수도
|
||||
let age = 100; // 나이
|
||||
let isMarried = true; // 결혼 여부
|
||||
|
||||
console.log(firstName, lastName, country, city, age, isMarried);
|
||||
```
|
||||
|
||||
```sh
|
||||
Asabeneh Yetayeh Finland Helsinki 100 true
|
||||
```
|
||||
|
||||
```js
|
||||
// 각각 다른 숫자 자료형 선언
|
||||
let age = 100; // 정수 (나이)
|
||||
const gravity = 9.81; // 실수 (중력)
|
||||
const boilingPoint = 100; // 정수 (끓는 점)
|
||||
const PI = 3.14; // 실수 (파이)
|
||||
console.log(gravity, boilingPoint, PI);
|
||||
```
|
||||
|
||||
```sh
|
||||
9.81 100 3.14
|
||||
```
|
||||
|
||||
```js
|
||||
// 쉼표(,)를 통해 변수를 구분해서 정의할 수 있습니다.
|
||||
let name = 'Asabeneh', // 이름
|
||||
job = 'teacher', // 직업
|
||||
live = 'Finland'; // 사는 곳
|
||||
console.log(name, job, live);
|
||||
```
|
||||
|
||||
```sh
|
||||
Asabeneh teacher Finland
|
||||
```
|
||||
|
||||
01-Day 폴더에서 _index.html_ 파일을 실행하면 다음과 같은 메시지가 나타납니다.
|
||||
|
||||

|
||||
|
||||
🌕 당신은 대단합니다! 1일차 도전을 완료했고, 우리는 멋져지고 있습니다. 이제 뇌와 근육을 운동해 봅시다!
|
||||
|
||||
# 💻 1일차: 실습
|
||||
|
||||
1. 다음의 의미를 갖는 주석을 만들어 봅시다. _주석은 코드를 읽을 수 있게 만듭니다._
|
||||
2. 또 다른 주석을 만들어 봅시다. _30DaysOfJavascript에_ 오신 것을 환영합니다.
|
||||
3. 여러 줄 주석을 사용해 봅시다. _주석은 읽기 편하고, 재사용하기 쉽고, 정보를 담고 있습니다_
|
||||
4. variable.js 파일을 만들고, 문자열 변수, 불리언 변수, undefined 변수, null 변수를 선언해 봅시다.
|
||||
5. datatype.js 파일을 만들고 **_typeof_** 연산을 통해서 데이터의 자료형을 확인해 봅시다. 모든 변수를 확인합시다!
|
||||
6. 값을 할당하지 않고 변수를 만들어 봅니다.
|
||||
7. 값을 할당하면서 변수를 만들어 봅니다.
|
||||
8. 변수 성, 이름, 결혼 여부, 사는 곳, 나이를 여러 줄로 선언해 봅시다.
|
||||
9. 변수 성, 이름, 결혼 여부, 사는 곳, 나이를 각각 한 줄로 선언해 봅시다.
|
||||
10. 두 변수 _myAge_ 와 _yourAge_ 를 만들어서 초기값을 할당하고, 콘솔창에 띄어봅시다.
|
||||
|
||||
```sh
|
||||
I am 25 years old.
|
||||
You are 30 years old.
|
||||
```
|
||||
|
||||
🎉 축하드립니다 ! 🎉
|
||||
|
||||
[Day 2 >>](./02_Day_Data_types/02_day_data_types.md)
|
@ -0,0 +1,128 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Document Object Model:30 Days Of JavaScript</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Lato:300, 400,400i,700,700i&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,500&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="wrapper">
|
||||
<h1>Asabeneh Yetayeh challenges in <span>2020</span></h1>
|
||||
<h2>30DaysOfJavaScript Challenge</h2>
|
||||
<p></p>
|
||||
<ul>
|
||||
<li>30DaysOfPython Challenge Done</li>
|
||||
<li>30DaysOfJavaScript Challenge Ongoing</li>
|
||||
<li>30DaysOfReact Challenge Coming</li>
|
||||
<li>30DaysOfReactNative Challenge Coming</li>
|
||||
<li>30DaysOfFullStack Challenge Coming</li>
|
||||
<li>30DaysOfDataAnalysis Challenge Coming</li>
|
||||
<li>30DaysOfMachineLearning Challenge Coming</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const hexaColor = () => {
|
||||
const str = '0123456789abcdef'
|
||||
let hexa = '#'
|
||||
let index
|
||||
for (let i = 0; i < 6; i++) {
|
||||
index = Math.floor(Math.random() * str.length)
|
||||
hexa += str[index]
|
||||
}
|
||||
return hexa
|
||||
}
|
||||
|
||||
const showDateTime = () => {
|
||||
const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',
|
||||
'October', 'November', 'December'
|
||||
]
|
||||
const now = new Date()
|
||||
const year = now.getFullYear()
|
||||
const month = months[now.getMonth()]
|
||||
const date = now.getDate()
|
||||
let hours = now.getHours()
|
||||
let minutes = now.getMinutes()
|
||||
let seconds = now.getSeconds()
|
||||
if (hours < 10) {
|
||||
hours = '0' + hours
|
||||
}
|
||||
if (minutes < 10) {
|
||||
minutes = '0' + minutes
|
||||
}
|
||||
if (seconds < 10) {
|
||||
seconds = '0' + seconds
|
||||
}
|
||||
|
||||
const dateMonthYear = `${month} ${date}, ${year}`
|
||||
|
||||
const time = hours + ':' + minutes
|
||||
const fullTime = dateMonthYear + ' ' + time
|
||||
return fullTime + `:${seconds}`
|
||||
}
|
||||
|
||||
const wrapper = document.querySelector('.wrapper')
|
||||
const year = document.querySelector('span')
|
||||
const time = document.querySelector('p')
|
||||
wrapper.style.width = '50%'
|
||||
wrapper.style.margin = 'auto'
|
||||
const title = document.querySelector('h1')
|
||||
const subTitle = document.querySelector('h2')
|
||||
title.style.textAlign = 'center'
|
||||
title.style.fontFamily = 'Montserrat'
|
||||
title.style.fontWeight = 500
|
||||
|
||||
subTitle.style.textAlign = 'center'
|
||||
subTitle.style.fontFamily = 'Montserrat'
|
||||
subTitle.style.fontWeight = 300
|
||||
subTitle.style.textDecoration = 'underline'
|
||||
|
||||
|
||||
time.style.textAlign = 'center'
|
||||
time.style.fontFamily = 'Montserrat'
|
||||
time.style.fontWeight = 400
|
||||
|
||||
setInterval(() => {
|
||||
year.style.color = hexaColor()
|
||||
year.style.fontSize = '96px'
|
||||
year.style.fontWeight = 700;
|
||||
time.textContent = showDateTime()
|
||||
time.style.background = hexaColor()
|
||||
time.style.width = "25%"
|
||||
time.style.margin = 'auto'
|
||||
time.style.padding = '10px'
|
||||
|
||||
}, 1000)
|
||||
|
||||
|
||||
|
||||
const ul = document.querySelector('ul')
|
||||
const lists = document.querySelectorAll('li')
|
||||
for (const list of lists) {
|
||||
list.style.listStyle = 'none'
|
||||
list.style.padding = '25px'
|
||||
list.style.margin = '3px'
|
||||
list.style.fontFamily = 'Montserrat'
|
||||
list.style.fontWeight = 300;
|
||||
list.style.letterSpacing = '0.0625em'
|
||||
|
||||
if (list.textContent.includes('Done')) {
|
||||
list.style.background = '#21bf73'
|
||||
} else if (list.textContent.includes('Ongoing')) {
|
||||
list.style.background = '#fddb3a'
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
list.style.background = '#fd5e53'
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1,669 @@
|
||||
# Học JavaScript trong 30 ngày
|
||||
|
||||
| # Ngày | Phần |
|
||||
| ----- | :-------------------------------------------------------------------------------------------------------------------------------------------------: |
|
||||
| 01 | [Giới thiệu](./readMe.md) |
|
||||
| 02 | [Kiểu dữ liệu](./02_Day_Data_types/02_day_data_types.md) |
|
||||
| 03 | [Booleans, Toán tử, Date](./03_Day_Booleans_operators_date/03_booleans_operators_date.md) |
|
||||
| 04 | [Điều kiện](./04_Day_Conditionals/04_day_conditionals.md) |
|
||||
| 05 | [Mảng](./05_Day_Arrays/05_day_arrays.md) |
|
||||
| 06 | [Vòng lặp](./06_Day_Loops/06_day_loops.md) |
|
||||
| 07 | [Functions](./07_Day_Functions/07_day_functions.md) |
|
||||
| 08 | [Objects](./08_Day_Objects/08_day_objects.md) |
|
||||
| 09 | [Đào sâu vào Functions](./09_Day_Higher_order_functions/09_day_higher_order_functions.md) |
|
||||
| 10 | [Sets và Maps](./10_Day_Sets_and_Maps/10_day_Sets_and_Maps.md) |
|
||||
| 11 | [Destructuring và Spreading](./11_Day_Destructuring_and_spreading/11_day_destructuring_and_spreading.md) |
|
||||
| 12 | [Biểu thức chính quy](./12_Day_Regular_expressions/12_day_regular_expressions.md) |
|
||||
| 13 | [Phương thức Console Object](./13_Day_Console_object_methods/13_day_console_object_methods.md) |
|
||||
| 14 | [Error Handling](./14_Day_Error_handling/14_day_error_handling.md) |
|
||||
| 15 | [Classes](./15_Day_Classes/15_day_classes.md) |
|
||||
| 16 | [JSON](./16_Day_JSON/16_day_json.md) |
|
||||
| 17 | [Web Storages](./17_Day_Web_storages/17_day_web_storages.md) |
|
||||
| 18 | [Promises](./18_Day_Promises/18_day_promises.md) |
|
||||
| 19 | [Closure](./19_Day_Closures/19_day_closures.md) |
|
||||
| 20 | [Viết Clean Code](./20_Day_Writing_clean_codes/20_day_writing_clean_codes.md) |
|
||||
| 21 | [DOM](./21_Day_DOM/21_day_dom.md) |
|
||||
| 22 | [Thao tác với DOM Object](./22_Day_Manipulating_DOM_object/22_day_manipulating_DOM_object.md) |
|
||||
| 23 | [Event Listeners](./23_Day_Event_listeners/23_day_event_listeners.md) |
|
||||
| 24 | [Dự án nhỏ: Hệ mặt trời](./24_Day_Project_solar_system/24_day_project_solar_system.md) |
|
||||
| 25 | [Dự án nhỏ: Hiển thị dữ liệu các quốc gia trên thế giới 1](./25_Day_World_countries_data_visualization_1/25_day_world_countries_data_visualization_1.md) |
|
||||
| 26 | [Dự án nhỏ: Hiển thị dữ liệu các quốc gia trên thế giới 2](./26_Day_World_countries_data_visualization_2/26_day_world_countries_data_visualization_2.md) |
|
||||
| 27 | [Dự án nhỏ: Portfolio](./27_Day_Mini_project_portfolio/27_day_mini_project_portfolio.md) |
|
||||
| 28 | [Dự án nhỏ: Bảng xếp hạng](./28_Day_Mini_project_leaderboard/28_day_mini_project_leaderboard.md) |
|
||||
| 29 | [Dự án nhỏ:Nhân vật hoạt hình](./29_Day_Mini_project_animating_characters/29_day_mini_project_animating_characters.md) |
|
||||
| 30 | [Dự án cuối cùng](./30_Day_Mini_project_final/30_day_mini_project_final.md) |
|
||||
|
||||
🧡🧡🧡 CHÚC BẠN CODE VUI VẺ 🧡🧡🧡
|
||||
|
||||
<div>
|
||||
<small>Ủng hộ <strong>tác giả</strong> để bổ sung thêm nhiều kiến thức bổ ích</small> <br />
|
||||
<a href="https://www.paypal.me/asabeneh">
|
||||
<img src='../images/paypal_lg.png' alt='Paypal Logo' style="width:10%"/>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div align="center">
|
||||
<h1> Học JavaScript trong 30 ngày: Giới thiệu</h1>
|
||||
<a class="header-badge" target="_blank" href="https://www.linkedin.com/in/asabeneh/">
|
||||
<img src="https://img.shields.io/badge/style--5eba00.svg?label=LinkedIn&logo=linkedin&style=social">
|
||||
</a>
|
||||
<a class="header-badge" target="_blank" href="https://twitter.com/Asabeneh">
|
||||
<img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/asabeneh?style=social">
|
||||
</a>
|
||||
<br>
|
||||
<sub>Tác giả:
|
||||
<a href="https://www.linkedin.com/in/asabeneh/" target="_blank">Asabeneh Yetayeh</a><br>
|
||||
<small> Tháng 1, 2020</small>
|
||||
</sub>
|
||||
<div>
|
||||
|
||||
🇬🇧 [Tiếng Anh](./readMe.md)
|
||||
🇪🇸 [Tiếng Tây Ban Nha](./Spanish/readme.md)
|
||||
🇷🇺 [Tiếng Nga](./RU/README.md)
|
||||
KR [Tiếng Hàn](./Korea/README.md)
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
[Ngày 2 >>](./02_Day_Data_types/02_day_data_types.md)
|
||||
|
||||

|
||||
|
||||
- [Học JavaScript trong 30 ngày](#30-days-of-javascript)
|
||||
- [📔 Ngày 1](#-day-1)
|
||||
- [Giới thiệu](#introduction)
|
||||
- [Yêu cầu](#requirements)
|
||||
- [Thiết lập](#setup)
|
||||
- [Cài Node.js](#install-nodejs)
|
||||
- [Trình duyệt](#browser)
|
||||
- [Cài Google Chrome](#installing-google-chrome)
|
||||
- [Mở Console Google Chrome](#opening-google-chrome-console)
|
||||
- [Viết code trên Console trình duyệt](#writing-code-on-browser-console)
|
||||
- [Console.log](#consolelog)
|
||||
- [Console.log có nhiều tham số](#consolelog-with-multiple-arguments)
|
||||
- [Comments](#comments)
|
||||
- [Cú pháp](#syntax)
|
||||
- [Toán tử](#arithmetics)
|
||||
- [Code Editor](#code-editor)
|
||||
- [Cài Visual Studio Code](#installing-visual-studio-code)
|
||||
- [Cách sử dụng Visual Studio Code](#how-to-use-visual-studio-code)
|
||||
- [Thêm JavaScript vào trang web](#adding-javascript-to-a-web-page)
|
||||
- [Inline Script](#inline-script)
|
||||
- [Internal Script](#internal-script)
|
||||
- [External Script](#external-script)
|
||||
- [Nhiều External Scripts](#multiple-external-scripts)
|
||||
- [Giới thiệu về Kiểu dữ liệu](#introduction-to-data-types)
|
||||
- [Numbers](#numbers)
|
||||
- [Strings](#strings)
|
||||
- [Booleans](#booleans)
|
||||
- [Undefined](#undefined)
|
||||
- [Null](#null)
|
||||
- [Xác định kiểu dữ liệu](#checking-data-types)
|
||||
- [Comments tiếp](#comments-again)
|
||||
- [Biến](#variables)
|
||||
- [💻 Ngày 1: Bài tập](#-day-1-exercises)
|
||||
|
||||
# 📔 Ngày 1
|
||||
|
||||
## Giới thiệu
|
||||
|
||||
**Chúc mừng bạn** đã quyết định tham gia học JavaScript trong 30 ngày. Trong thử thách này, bạn sẽ học mọi thứ bạn cần để trở thành một lập trình viên JavaScript, toàn bộ khái niệm về lập trình. Cuối thử thách, bạn sẽ nhận được chứng chỉ hoàn thành thử thách lập trình 30DaysOfJavaScript. Trong trường hợp bạn cần giúp đỡ hoặc nếu bạn muốn giúp đỡ người khác, bạn có thể tham gia [nhóm Telegram](https://t.me/ThirtyDaysOfJavaScript).
|
||||
|
||||
Thử thách **30DaysOfJavaScript** là để hướng dẫn cho cả người mới học và các lập trình viên JavaScript nâng cao. Chào bạn đến với JavaScript. JavaScript là ngôn ngữ lập trình của web. Tôi thích sử dụng và chia sẻ kiến thức về JavaScript và tôi hy vọng bạn cũng sẽ làm như vậy.
|
||||
|
||||
Trong các thử thách JavaScript này, bạn sẽ học JavaScript, ngôn ngữ lập trình phổ biến nhất thế giới đến thời điểm hiện tại.
|
||||
JavaScript sử dụng để **_thêm tính tương tác cho các trang web, để phát triển ứng dụng di động, ứng dụng máy tính để bàn, trò chơi_** và ngày nay JavaScript có thể được sử dụng cho **_machine learning_** and **_AI_**.
|
||||
**_JavaScript (JS)_** ngày càng phổ biến trong những năm gần đây và dẫn đầu các ngôn ngữ lập trình trong 6 năm liên tiếp và là ngôn ngữ lập trình được sử dụng nhiều nhất trên Github.
|
||||
|
||||
## Yêu cầu
|
||||
|
||||
Bạn không cần phải có kiến thức về lập trình để bắt đầu thử thách này, bạn chỉ cần có:
|
||||
|
||||
1. Động lực
|
||||
2. Máy tính (Laptop)
|
||||
3. Kết nối mạng
|
||||
4. Trình duyệt
|
||||
5. Code editor (VSCode)
|
||||
|
||||
## Thiết lập
|
||||
|
||||
Tôi tin rằng bạn có động lực và muốn trở thành một lập trình viên, máy tính và kết nối mạng. Nếu bạn đã có đầy đủ thì chúng ta hãy bắt đầu.
|
||||
|
||||
### Cài Node.js
|
||||
|
||||
Bạn có thể không cần phải cài Node.js ngay bây giờ nhưng sau này thì có thể cần đến. Cài [Node.js](https://nodejs.org/en/).
|
||||
|
||||

|
||||
|
||||
Sau khi tải xong, nhấn đúp để cài đặt
|
||||
|
||||

|
||||
|
||||
Chúng ta có thể kiểm tra xem Node đã cài hay chưa bằng cách mở terminal hoặc cmd trên máy tính.
|
||||
|
||||
```sh
|
||||
$ node -v
|
||||
v12.14.0
|
||||
```
|
||||
|
||||
Khi làm bài hướng dẫn này tôi đang sử dụng phiên bản Node 12.14.0, nhưng hiện tại phiên bản Node.js được đề xuất để tải xuống là v17.6.0, bạn có thể sử dụng phiên bản Node mới nhất.
|
||||
|
||||
### Trình duyệt
|
||||
|
||||
Hiện tại có rất nhiều trình duyệt web, tuy nhiên tôi đề xuất nên sử dụng Google Chrome.
|
||||
|
||||
#### Cài Google Chrome
|
||||
|
||||
Cài [Google Chrome](https://www.google.com/chrome/) nếu bạn chưa cài nó. Chúng ta có thể viết code JavaScript trên console trình duyệt, nhưng chúng ta không sử dụng console trình duyệt để lập trình.
|
||||
|
||||

|
||||
|
||||
#### Mở Console Google Chrome
|
||||
|
||||
|
||||
Bạn có thể mở console Google Chrome bằng cách nhấp vào ba dấu chấm ở trên cùng bên phải trình duyệt, chọn _More tools -> Developer tools_ hoặc sử dụng phím tắt.
|
||||
|
||||

|
||||
|
||||
Để mở Console Google Chrome bằng phím tắt:
|
||||
|
||||
```sh
|
||||
Mac
|
||||
Command+Option+J
|
||||
|
||||
Windows/Linux:
|
||||
Ctl+Shift+J (hoặc F12)
|
||||
```
|
||||
|
||||

|
||||
|
||||
Sau khi bạn mở console Google Chrome, hãy thử khám phá các nút được đánh dấu bên dưới. Chúng ta sẽ dành phần lớn thời gian trên Console. Console là nơi bạn viết code JavaScript. Công cụ Google Console V8 sẽ chuyển code của bạn thành mã máy.
|
||||
Bây giờ chúng ta sẽ viết mã JavaScript trên console của Google Chrome:
|
||||
|
||||

|
||||
|
||||
#### Viết code trên Console của trình duyệt
|
||||
|
||||
Chúng ta có thể viết bất kỳ code JavaScript nào trên console của Google hoặc bất kỳ console của trình duyệt nào. Tuy nhiên, đối với thử thách này, chúng ta chỉ sử dụng console của Google Chrome. Mở console bằng cách sử dụng:
|
||||
|
||||
```sh
|
||||
Mac
|
||||
Command+Option+I
|
||||
|
||||
Windows:
|
||||
Ctl+Shift+I (hoặc F12)
|
||||
```
|
||||
|
||||
##### Console.log
|
||||
|
||||
Để viết code JavaScript, chúng ta sẽ sử dụng 1 hàm có sẵn là **console.log()**. Chúng ta sẽ truyền vào một tham số và hàm sẽ hiển thị kết quả đã truyền vào. Chúng ta sẽ truyền `'Hello, World'` dưới dạng là tham số vào hàm `console.log()`.
|
||||
|
||||
```js
|
||||
console.log('Hello, World!')
|
||||
```
|
||||
|
||||
##### Console.log có nhiều tham số
|
||||
|
||||
Hàm **`console.log()`** có thể nhận nhiều tham số được phân cách bằng dấu phẩy. Cú pháp sẽ giống như này:**`console.log(param1, param2, param3)`**
|
||||
|
||||

|
||||
|
||||
```js
|
||||
console.log('Hello', 'World', '!')
|
||||
console.log('MỪNG', 'NGÀY', '8/3', 2022)
|
||||
console.log('Chào bạn', 'đến với ', 30, 'Days', 'Of', 'JavaScript')
|
||||
```
|
||||
|
||||
Bạn có thể thấy đoạn code bên trên, hàm _`console.log()`_ có thể nhận nhiều tham số.
|
||||
|
||||
Chúc mừng! Bạn đã viết code JavaScript bằng cách sử dụng _`console.log()`_.
|
||||
|
||||
##### Comments
|
||||
|
||||
Chúng ta có thể thêm comment vào code. Comment rất quan trọng để làm cho code dễ đọc hơn và để lại nhận xét trong code. JavaScript không chạy phần đã comment trong code. Trong JavaScript, bất kỳ dòng nào bắt đầu bằng `//` trong JavaScript đều là một comment, và bất kỳ cái gì kèm theo như thế này `//` đều là comment.
|
||||
|
||||
**Ví dụ: Comment 1 dòng**
|
||||
|
||||
```js
|
||||
// Đây là comment thứ nhất
|
||||
// Đây là comment thứ hai
|
||||
// Đây là comment 1 dòng
|
||||
```
|
||||
|
||||
**Ví dụ: Comment nhiều dòng**
|
||||
|
||||
```js
|
||||
/*
|
||||
Đây là comment nhiều dòng
|
||||
Comment nhiều dòng có thể có nhiều dòng
|
||||
JavaScript là ngôn ngữ của web
|
||||
*/
|
||||
```
|
||||
|
||||
##### Cú pháp
|
||||
|
||||
Ngôn ngữ lập trình tương tự như ngôn ngữ của con người. Tiếng Việt hoặc nhiều ngôn ngữ khác sử dụng các từ, cụm từ, câu, câu ghép và nhiều ngôn ngữ khác để truyền tải một thông điệp có ý nghĩa. Ý nghĩa cú pháp trong tiếng Việt là _sự sắp xếp các từ và cụm từ để tạo ra các câu có cấu trúc trong một ngôn ngữ_. Định nghĩa kỹ thuật của cú pháp là cấu trúc của các câu lệnh trong một ngôn ngữ máy tính. Ngôn ngữ lập trình cũng có cú pháp. JavaScript là một ngôn ngữ lập trình và giống như các ngôn ngữ lập trình khác, nó có cú pháp riêng. Nếu chúng ta không viết một cú pháp mà JavaScript hiểu, nó sẽ phát sinh các loại lỗi khác nhau. Chúng ta sẽ khám phá các loại lỗi trong JavaScript khác nhau ở phần sau. Bây giờ, hãy xem 1 cú pháp bị lỗi bên dưới.
|
||||
|
||||

|
||||
|
||||
Tôi đã phạm một sai lầm có chủ ý. Kết quả là console làm tăng lỗi cú pháp. Trên thực tế, cú pháp rất nhiều thông tin. Nó thông báo loại sai lầm đã được thực hiện. Bằng cách đọc hướng dẫn phản hồi lỗi, chúng ta có thể sửa cú pháp và khắc phục sự cố. Quá trình xác định và loại bỏ lỗi khỏi chương trình được gọi là gỡ lỗi (debug). Bây giờ chúng ta sẽ gỡ lỗi:
|
||||
|
||||
```js
|
||||
console.log('Hello, World!')
|
||||
console.log('Hello, World!')
|
||||
```
|
||||
|
||||
Hiện tại, chúng ta đã thấy cách hiển thị văn bản bằng cách sử dụng _`console.log()`_. Nếu chúng ta in văn bản hoặc chuỗi bằng cách sử dụng _`console.log()`_, văn bản phải nằm trong dấu nháy đơn, dấu ngoặc kép hoặc que ngược.
|
||||
|
||||
**Ví dụ:**
|
||||
|
||||
```js
|
||||
console.log('Hello, World!')
|
||||
console.log("Hello, World!")
|
||||
console.log(`Hello, World!`)
|
||||
```
|
||||
|
||||
#### Toán tử
|
||||
|
||||
Bây giờ, chúng ta sẽ viết code JavaScript nhiều hơn bằng cách sử dụng _`console.log()`_ trên console của Google Chrome cho các kiểu dữ liệu số. Ngoài văn bản, chúng ta cũng có thể thực hiện các phép tính toán bằng JavaScript. Chúng ta sẽ thực hiện các phép tính đơn giản sau. Có thể viết code JavaScript trên console Google Chrome trực tiếp mà không cần hàm **_`console.log()`_**. Tuy nhiên, nó được đưa vào phần này vì hầu hết thử thách này sẽ diễn ra trong code editor, nơi việc sử dụng hàm là bắt buộc.
|
||||
|
||||

|
||||
|
||||
```js
|
||||
console.log(2 + 3) // Cộng
|
||||
console.log(3 - 2) // Trừ
|
||||
console.log(2 * 3) // Nhân
|
||||
console.log(3 / 2) // Chia
|
||||
console.log(3 % 2) // Chia lấy dư
|
||||
console.log(3 ** 2) // Luỹ thừa 3 ** 2 == 3 * 3
|
||||
```
|
||||
|
||||
### Code Editor
|
||||
|
||||
Chúng ta có thể viết code trên console của trình duyệt, nhưng nó sẽ không dành cho các dự án lớn hơn. Trong môi trường làm việc thực tế, các lập trình viên sử dụng các code editor khác nhau để viết code. Trong thử thách Học JavaScript trong 30 ngày này, chúng ta sẽ sử dụng Visual Studio Code.
|
||||
|
||||
#### Cài Visual Studio Code
|
||||
|
||||
Visual Studio Code là một trình soạn thảo văn bản nguồn mở rất phổ biến. Tôi muốn giới thiệu bạn [tải Visual Studio Code](https://code.visualstudio.com/), nhưng nếu bạn muốn sử dụng các editor, hãy thoải mái làm theo những gì bạn có.
|
||||
|
||||

|
||||
|
||||
Nếu bạn đã cài đặt Visual Studio Code, bây giờ chúng ta sẽ sử dụng nó.
|
||||
|
||||
#### Cách sử dụng Visual Studio Code
|
||||
|
||||
Mở Visual Studio Code bằng cách nhấp đúp vào biểu tượng. Khi đã mở, bạn sẽ thấy giao diện như này. Hãy làm quen với các phần mà được đánh dấu.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Thêm JavaScript vào trang web
|
||||
|
||||
JavaScript có thể thêm vào trang web bằng 3 cách:
|
||||
|
||||
- **_Inline script_**
|
||||
- **_Internal script_**
|
||||
- **_External script_**
|
||||
- **_Multiple External scripts_**
|
||||
|
||||
Các phần sau đây sẽ hướng dẫn các cách khác nhau để thêm code JavaScript vào trang web.
|
||||
|
||||
### Inline Script
|
||||
|
||||
Tạo thư mục trên màn hình hoặc ở bất kỳ vị trí nào, đặt tên là 30DaysOfJS và tạo tệp có tên **_`index.html`_**. Sau đó, dán mã sau và mở nó trong trình duyệt, ví dụ [Chrome](https://www.google.com/chrome/).
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="vi">
|
||||
<head>
|
||||
<title>30DaysOfScript:Inline Script</title>
|
||||
</head>
|
||||
<body>
|
||||
<button onclick="alert('Chào bạn đến với 30DaysOfJavaScript!')">Nhấp vàod đây</button>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Bây giờ, bạn vừa viết inline script (nhúng trực tiếp) đầu tiên của mình. Chúng tôi có thể tạo một popup cảnh báo bằng cách sử dụng hàm có sẵn _`alert()`_ .
|
||||
|
||||
### Internal Script
|
||||
|
||||
Internal Script có thể được viết trong thẻ _`head`_ hoặc _`body`_, nhưng nó sẽ được ưu tiên chạy trước khi viết trong phần body của tệp HTML.
|
||||
Trước tiên, chúng ta hãy viết trên phần head của trang.
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="vi">
|
||||
<head>
|
||||
<title>30DaysOfScript:Internal Script</title>
|
||||
<script>
|
||||
console.log('Chào bạn đến với 30DaysOfJavaScript')
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Đây là cách chúng ta sẽ viết Inernal Script trong thử thách này. Viết code JavaScript trong phần body là tùy chọn ưu tiên nhất. Mở console của trình duyệt để xem kết quả từ `console.log()`.
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="vi">
|
||||
<head>
|
||||
<title>30DaysOfScript:Internal Script</title>
|
||||
</head>
|
||||
<body>
|
||||
<button onclick="alert('Chào bạn đến với 30DaysOfJavaScript!');">Click Me</button>
|
||||
<script>
|
||||
console.log('Chào bạn đến với 30DaysOfJavaScript')
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Mở console của trình duyệt để xem kết quả từ `console.log()`.
|
||||
|
||||

|
||||
|
||||
### External Script
|
||||
|
||||
Tương tự như Internal Script, External Script có thể nằm trên header hoặc body, nhưng tốt hơn là đặt nó trong phần body.
|
||||
Đầu tiên, chúng ta sẽ tạo một tệp JavaScript có đuôi là `.js`. Tất cả tệp JavaScript đều có đuôi là `.js`. Tạo một tệp có tên là `Introduction.js` bên trong thư mục vừa nảy bạn đã tạo và viết code sau và nhúng tệp .js này vào cuối phần body.
|
||||
|
||||
```js
|
||||
console.log('Chào bạn đến với 30DaysOfJavaScript')
|
||||
```
|
||||
|
||||
Nhúng External scripts trong thẻ _head_:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="vi">
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:External script</title>
|
||||
<script src="introduction.js"></script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Nhúng External scripts trong thẻ _body_:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>30DaysOfJavaScript:External script</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Liên kết bên ngoài JavaScript có thể nằm trong header hoặc trong body -->
|
||||
<!-- Trước thẻ đóng của phần body là nơi được khuyến nghị để nhúng các tệp JavaScript bên ngoài -->
|
||||
<script src="introduction.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Mở console trình duyệt để xem kết quả của `console.log()`.
|
||||
|
||||
### Nhúng nhiều External Scripts
|
||||
|
||||
Chúng ta cũng có thể nhúng nhiều tệp JavaScript bên ngoài trong một trang web.
|
||||
Tạo tệp `helloworld.js` trong thư mục 30DaysOfJS và viết theo code bên dưới.
|
||||
|
||||
```js
|
||||
console.log('Hello, World!')
|
||||
```
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="vi">
|
||||
<head>
|
||||
<title>Multiple External Scripts</title>
|
||||
</head>
|
||||
<body>
|
||||
<script src="./helloworld.js"></script>
|
||||
<script src="./introduction.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
_Tệp main.js của bạn phải nằm bên dưới tất cả các script khác_. Điều rất quan trọng là phải nhớ điều này.
|
||||
|
||||

|
||||
|
||||
## Giới thiệu các kiểu các dữ liệu
|
||||
|
||||
Trong JavaScript và các ngôn ngữ lập trình khác, có nhiều kiểu dữ liệu khác nhau. Sau đây là các kiểu dữ liệu nguyên thủy của JavaScript: _String, Number, Boolean, undefined, Null_, và _Symbol_.
|
||||
|
||||
### Numbers (số)
|
||||
|
||||
- Số nguyên: Số nguyên (âm, 0 và dương)
|
||||
Ví dụ:
|
||||
... -3, -2, -1, 0, 1, 2, 3 ...
|
||||
- Số thập phân
|
||||
Ví dụ
|
||||
... -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 ...
|
||||
|
||||
### Strings (Chuỗi)
|
||||
|
||||
Tập hợp một hoặc nhiều ký tự nằm giữa hai nháy đơn, dấu nháy kép hoặc gạch chéo.
|
||||
|
||||
**Ví dụ:**
|
||||
|
||||
```js
|
||||
'a'
|
||||
'Asabeneh'
|
||||
"Asabeneh"
|
||||
'Việt Nam'
|
||||
'JavaScript là ngôn ngữ lập trình tuyệt nhất'
|
||||
'Tôi thích chia sẻ'
|
||||
'Tôi hy vọng bạn đang tận hưởng ngày đầu tiên'
|
||||
`Chúng ta cũng có thể tạo một chuỗi bằng cách sử dụng một gạch chéo`
|
||||
'Một chuỗi có thể chỉ nhỏ bằng một ký tự hoặc lớn bằng nhiều trang'
|
||||
'Bất kỳ loại dữ liệu nào dưới dấu nháy đơn, dấu nháy kép hoặc gạch chéo đều là một chuỗi'
|
||||
```
|
||||
|
||||
### Booleans
|
||||
|
||||
Giá trị boolean là `True` hoặc `False`. Mọi phép so sánh đều trả về giá trị boolean, đúng hoặc sai.
|
||||
|
||||
Kiểu dữ liệu boolean là giá trị `true` hoặc `false`.
|
||||
|
||||
**Ví dụ:**
|
||||
|
||||
```js
|
||||
true // nếu đèn sáng, giá trị là true
|
||||
false // nếu đèn tắt, giá trị là false
|
||||
```
|
||||
|
||||
### Undefined
|
||||
|
||||
Trong JavaScript, nếu chúng ta không gán giá trị cho một biến thì giá trị đó không được xác định. Ngoài ra, nếu một hàm không trả về bất cứ thứ gì, nó sẽ trả về không xác định.
|
||||
|
||||
```js
|
||||
let firstName
|
||||
console.log(firstName) // undefined, bởi vì nó chưa được gán cho một giá trị nào
|
||||
```
|
||||
|
||||
### Null
|
||||
|
||||
Null trong JavaScript có nghĩa là một biến rỗng.
|
||||
|
||||
```js
|
||||
let emptyValue = null
|
||||
```
|
||||
|
||||
## Xác định kiểu dữ liệu
|
||||
|
||||
Để kiểm tra kiểu dữ liệu của một biến, chúng ta sử dụng **typeof**. Xem ví dụ bên dưới.
|
||||
|
||||
```js
|
||||
console.log(typeof 'Asabeneh') // string
|
||||
console.log(typeof 5) // number
|
||||
console.log(typeof true) // boolean
|
||||
console.log(typeof null) // object type
|
||||
console.log(typeof undefined) // undefined
|
||||
```
|
||||
|
||||
## Comments lần nữa
|
||||
|
||||
Hãy nhớ rằng comment trong JavaScript cũng tương tự như các ngôn ngữ lập trình khác. Comment rất quan trọng trong việc làm cho code của bạn dễ đọc hơn.
|
||||
Có hai cách comment:
|
||||
|
||||
- _Comment 1 dòng_
|
||||
- _Comment nhiều dòng_
|
||||
|
||||
```js
|
||||
// comment chính nó là một comment 1 dòng
|
||||
// let firstName = 'Asabeneh'; comment 1 dòng
|
||||
// let lastName = 'Yetayeh'; comment 1 dòng
|
||||
```
|
||||
|
||||
Comment nhiều dòng:
|
||||
|
||||
```js
|
||||
/*
|
||||
let location = 'Helsinki';
|
||||
let age = 100;
|
||||
let isMarried = true;
|
||||
Đây là comment nhiều dòng
|
||||
*/
|
||||
```
|
||||
|
||||
## Biến
|
||||
|
||||
Biến là _vùng chứa_ của dữ liệu. Các biến được sử dụng để _lưu trữ_ dữ liệu trong vị trí bộ nhớ. Khi một biến được khai báo, một vị trí bộ nhớ được dành riêng. Khi gán giá trị (dữ liệu) cho một biến, không gian bộ nhớ sẽ được lấp đầy bởi dữ liệu đó. Để khai báo một biến, chúng ta sử dụng các từ khóa _var_, _let_, hoặc _const_.
|
||||
|
||||
Đối với một biến chúng ta cần thay đổi dữ liệu sau này, chúng ta sử dụng _let_. Nếu dữ liệu của biến đó không cần thay đổi thì chúng ta sử dụng _const_. Ví dụ, PI, tên quốc gia, trọng lực, các đối tượng này không thay đổi dữ liệu thì dùng _const_. Chúng ta sẽ không sử dụng `var` trong thử thách này và tôi không khuyên bạn nên sử dụng nó. Đây là cách dễ bị lỗi khi khai báo biến, nó có rất nhiều lỗ hổng. Chúng ta sẽ nói chi tiết hơn về `var`, `let` và `const` trong các phần khác. Còn bây giờ, lời giải thích trên là đủ.
|
||||
|
||||
Tên biến JavaScript hợp lệ phải tuân theo các quy tắc sau:
|
||||
|
||||
- Tên biến JavaScript không được bắt đầu bằng một số.
|
||||
- Tên biến JavaScript không được có ký tự đặc biệt ngoại trừ ký tự $ và dấu gạch dưới _.
|
||||
- Tên biến JavaScript tuân theo quy ước camelCase.
|
||||
- Tên biến JavaScript không được có khoảng trắng giữa các từ.
|
||||
|
||||
Sau đây là các ví dụ về các biến JavaScript hợp lệ.
|
||||
|
||||
```js
|
||||
firstName
|
||||
lastName
|
||||
country
|
||||
city
|
||||
capitalCity
|
||||
age
|
||||
isMarried
|
||||
|
||||
first_name
|
||||
last_name
|
||||
is_married
|
||||
capital_city
|
||||
|
||||
num1
|
||||
num_1
|
||||
_num_1
|
||||
$num1
|
||||
year2020
|
||||
year_2020
|
||||
```
|
||||
|
||||
Hai biến đầu tiên bên trên tuân theo quy ước camelCase về khai báo trong JavaScript. Trong tài liệu này, chúng tôi sẽ sử dụng các biến camelCase (camelWithOneHump). Chúng ta sử dụng CamelCase (CamelWithTwoHump) để khai báo các lớp, chúng ta sẽ thảo luận về các lớp và đối tượng trong phần khác.
|
||||
|
||||
Ví dụ về các biến không hợp lệ:
|
||||
|
||||
```js
|
||||
first-name
|
||||
1_num
|
||||
num_#_1
|
||||
```
|
||||
|
||||
Chúng ta hãy khai báo các biến với các kiểu dữ liệu khác nhau. Để khai báo 1 biến, sử dụng từ khoá _let_ hoặc _const_ trước tên biến. Theo sau tên biến, chúng ta viết một dấu bằng (toán tử gán) và một giá trị (dữ liệu được gán).
|
||||
|
||||
```js
|
||||
// Cú pháp
|
||||
let tenBien = giatri
|
||||
```
|
||||
|
||||
Tên biến là tên lưu trữ các dữ liệu có giá trị khác nhau. Xem bên dưới để biết các ví dụ chi tiết.
|
||||
|
||||
**Ví dụ về khai báo biến**
|
||||
|
||||
```js
|
||||
// Khai báo biến với các kiểu dữ liệu các nhau
|
||||
let firstName = 'Đạt' // tên của 1 người
|
||||
let lastName = 'Ngô Quốc' // họ của 1 người
|
||||
let country = 'Việt Nam' // quốc gia
|
||||
let city = 'Hà Nội' // thủ đô
|
||||
let age = 19 // tuổi
|
||||
let isMarried = false // đã cưới hay chưa
|
||||
|
||||
console.log(firstName, lastName, country, city, age, isMarried)
|
||||
```
|
||||
|
||||
```sh
|
||||
Đạt Ngô Quốc Việt Nam Hà Nội 19 false
|
||||
```
|
||||
|
||||
```js
|
||||
// Khai báo biến với kiểu dữ liệu số
|
||||
let age = 100 // tuổi
|
||||
const gravity = 9.81 // trọng lực trái đất m/s2
|
||||
const boilingPoint = 100 // độ sôi của nước, nhiệt độ tính bằng °C
|
||||
const PI = 3.14 // số PI
|
||||
console.log(gravity, boilingPoint, PI)
|
||||
```
|
||||
|
||||
```sh
|
||||
9.81 100 3.14
|
||||
```
|
||||
|
||||
```js
|
||||
// Bạn cũngc có thể khai báo biến trên 1 dòng phân cách bằng dấu phẩy, tuy nhiên, tôi khuyên bạn nên sử dụng một dòng riêng biệt để làm cho code dễ đọc hơn
|
||||
let name = 'Ngô Quốc Đạt', job = 'developer', live = 'Việt Nam'
|
||||
console.log(name, job, live)
|
||||
```
|
||||
|
||||
```sh
|
||||
Ngô Quốc Đạt developer Việt Nam
|
||||
```
|
||||
|
||||
Khi bạn chạy tệp _index.html_ trong thư mục 01-Day bạn sẽ thấy như này:
|
||||
|
||||

|
||||
|
||||
🌕 Bạn thật tuyệt! Bạn vừa hoàn thành thử thách ngày 1 và bạn đang trên đường vươn tới sự vĩ đại. Bây giờ hãy thực hiện một số bài tập cho não và cơ bắp của bạn.
|
||||
|
||||
# 💻 Ngày 1: Bài tập
|
||||
|
||||
1. Viết 1 dòng comment nói là, _comment làm code dễ đọc hơn_
|
||||
2. Viết 1 dòng comment khác nói là, _Chào mừng bạn đến với 30DaysOfJavaScript_
|
||||
3. Viết comment nhiều dòng nói là, _comment làm code dễ đọc hơn, dễ sử dụng lại_ _và chi tiết_
|
||||
4. Tạo tệp `variable.js` và khai báo các biến và gán các kiểu dữ liệu `string`, `boolean`, `undefined` và `null`.
|
||||
5. Tạo tệp `datatypes.js` và sử dụng **_typeof_** để kiểm tra các kiểu dữ liệu khác nhau. Kiểm tra kiểu dữ liệu của từng biến.
|
||||
6. Khai báo 4 biến không gán giá trị
|
||||
7. Khai báo 4 biến có gán giá trị
|
||||
8. Khai báo các biến để lưu trữ họ, tên, tình trạng hôn nhân, quốc gia và tuổi của bạn trong nhiều dòng
|
||||
9. Khai báo các biến để lưu trữ họ, tên, tình trạng hôn nhân, quốc gia và tuổi của bạn trong một dòng duy nhất
|
||||
10. Khai báo 2 biến _myAge_ và _yourAge_ và gán giá trị cho nó, và xuất nó ra trên console của trình duyệt.
|
||||
|
||||
```sh
|
||||
I am 25 years old.
|
||||
You are 30 years old.
|
||||
```
|
||||
|
||||
🎉 CHÚC MỪNG ! 🎉
|
||||
|
||||
[Ngày 2 >>](./02_Day_Data_types/02_day_data_types.md)
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue