ECMAScript : ECMA라는 국제 표준화 기구에서 정해준 규칙을 정리해 둔 Script (ES1, ES2 ... ES6, ES6+)
JavaScript는 프로그래밍 언어(결과물)이고, ECMAScript는 프로그래밍 언어의 표준(설명서)이다.
JavaScript는 ECMAScript를 기반으로 하지만 ECMAScript에 정의된 내용뿐만 아니라, 다른 부가적인 기능도 존재한다.-ex)DOM
Symbol
const symbolA = Symbol('this is Symbol');
const symbolB = Symbol('this is Symbol');
console.log(symbolA === symbolB); // false
Bigint
3n * 2; // TypeError
3n * 2n; // 6n
Number(3n) * 2; // 6
typeof 연산자
typeof 'Codeit'; // string
typeof Symbol(); // symbol
typeof {}; // object
typeof []; // object
typeof true; // boolean
typeof(false); // boolean
typeof(123); // number
typeof(NaN); // number
typeof(456n); // bigint
typeof(undefined); // undefined
typeof null; // object
function sayHi() {
console.log('Hi!?');
}
typeof sayHi; // function
falsy 값 : False로 평가되는 값
truthy 값 : True로 평가되는 값 ([]빈배열, {}빈객체)
true && true // true
true && false // false
false && true // false
false && false // false
true || true // true
true || false // true
false || true // true
false || false // false
null && undefined // null false && false -앞
0 || true // true false || true - 뒤
'0' && NaN //NaN true && NaN - 뒤
{} || 123 // {} true || true - 앞
const example1 = null ?? 'I'; // I
const example2 = undefined ?? 'love'; // love
const example3 = 'Codeit' ?? 'JavaScript'; // Codeit
console.log(example1, example2, example3); // I love Codeit
const title1 = false || 'codeit';
const title2 = false ?? 'codeit';
console.log(title1); // codeit
console.log(title2); // false
const width1 = 0 || 150;
const width2 = 0 ?? 150;
console.log(width1); // 150
console.log(width2); // 0
var 키워드
for (var i = 0; i < 5; i++) {
console.log(i);
}
console.log(i); // 5 for문 안에 선언된 값이 유효하게 작동됨
let, const 키워드
function sayHi() {
const userName = 'codeit';
console.log(`Hi ${userName}!`);
}
for (let i = 0; i < 5; i++) {
console.log(i);
}
{
let language = 'JavaScript';
}
console.log(userName); // ReferenceError
console.log(i); // ReferenceError
console.log(language); // ReferenceError
1. 함수 선언식
function 함수이름(파라미터) {
함수 내용
}
2. 함수 표현식
const sayHi = function (파라미터) {
함수 내용
};
sayHi();
🎉 기명함수 표현식(이름 있는 함수 표현식) 🎉
const sayHi = function () {
console.log('Hi');
};
console.log(sayHi.name); // sayHi-이름이 없는 경우
const sayHi = function printHiInConsole() {
console.log('Hi');
};
console.log(sayHi.name); // printHiInConsole-이름이 있는 경우
const sayHi = function printHiInConsole() {
console.log('Hi');
};
printHiInConsole(); // ReferenceError
let countdown = function(n) {
console.log(n);
if (n === 0) {
console.log('End!');
} else {
countdown(n - 1);
}
};
let myFunction = countdown;
countdown = null;
myFunction(5); // TypeError
let countdown = function printCountdown(n) {
console.log(n);
if (n === 0) {
console.log('End!');
} else {
printCountdown(n - 1);
}
};
let myFunction = countdown;
countdown = null;
myFunction(5); // 정상적으로 동작
(function (x, y) {
console.log(x + y);
})(3, 5); // 변수 없이도 사용 가능
(function sayHi() {
console.log('Hi!');
})();
sayHi(); // ReferenceError
(function countdown(n) {
console.log(n);
if (n === 0) {
console.log('End!');
} else {
countdown(n - 1);
}
})(5);
const printJS = function () {
console.log('JavaScript');
};
const codeit = {
printTitle: function () {
console.log('Codeit');
}
}
myBtn.addEventListener('click', function () {
console.log('button is clicked!');
});
function myFunction() {
return function () {
console.log('Hi!?');
};
};
function sayHi(name = 'Codeit') {
console.log(`Hi! ${name}`);
}
sayHi('JavaScript'); // Hi! JavaScript
sayHi(); // Hi! Codeit
function printArguments() {
// arguments 객체의 요소들을 하나씩 출력
for (const arg of arguments) {
console.log(arg);
}
}
printArguments('Young', 'Mark', 'Koby');