string concatenation
console.log('my' + 'cat'); // my cat
console.log('1' + 2); // 12
numeric operator
console.log(2 ** 3); // exponentiation(제곱) == 8
equality (loose && strict)
const string = '5'
const num = 5;
// loose equality, with type conversion
console.log(string == num); // true
console.log(string != num); // false
// strict equality, with No type conversion
console.log(string === num); // false
console.log(string !== num); // true
object equality by reference (loose && strict)
const lee1 = { name: 'lee' };
const lee2 = { name: 'lee' };
const lee3 = lee1;
console.log(lee1 == lee2); // false
console.log(lee1 === lee2); // false
console.log(lee1 === lee3); // true
c 언어 pointer 개념과 같다
(변수에 주소값을 저장)
equality quiz
console.log(0 == false); // true
console.log(0 === false); // false
console.log('' == false); // true
console.log('' === false); // false
console.log(null == undefined); // true
console.log(null === undefined); // false
strict equality 식을 사용하게 되면 type이 다르기 때문에 false
- function is object in JS
- fundamental building block in the program
- subprogram can be used multiple times
- performs a task or calculates a value
function declaration
function log(str) {
console.log(str);
}
log('hello');
log(12);
// type이 중요 할 경우 type script 사용
function log(str: string): number {
console.log(str);
return 1;
}
parameter
premitive parameters: passed by value
object parameters: passed by reference
function changeName(obj) {
obj.name = 'kim';
}
const obj = {name: 'lee'};
// reference가 전달 됨
changeName(obj);
console.log(obj); // {name: "kim"}
default parameter
added in ES6
// default parameter 미적용
function showMessage(message, from) {
if (from === undefined) {
from = 'unknown';
}
console.log(`${message} by ${from}`); // Hi! by unknown
}
showMessage('hi');
// default parameter 적용 (default 값 설정)
function showMessage(message, from = 'unknown') {
console.log(`${message} by ${from}`); // Hi! by unknown
}
showMessage('hi');
rest parameter
added in ES6
배열 형태로 파라메터 전달
function printAll(...args) {
// 기본 for문
for (let i = 0; i < args.length; i++) {
console.log(args[i]);
}
// rest parameter
for (const i of args) {
console.log(i);
}
// rest parameter
args.forEach((i) => console.log(i));
}
showMessage('hi');
local scope
{}scope 안에 선언 되어 있는 변수는 scope 밖에서 인식 X
scope 안에서는 전역변수 확인 가능
밖에서는 안이 보이지 않고
안에서만 밖을 볼 수 있다.
let grobalMessage = 'global' // global variable
function printMessage() {
let message = 'hi';
console.log(message); //local variable
console.log(grobalMessage);
}
printMessage();
console.log(message); // Error
Early return && Early exit
조건에 위배 되면 빠른 return
// bad
function upgradeUser(user) {
if (user.point > 10) {
// long upgrade login...
}
}
// good
function upgradeUser(user) {
if (user.point <= 10) {
return;
}
// long upgrade login...
}