먼저 변수의 이름을 설정할 때는 숫자가 첫번째로 올 수 없다.
var test = 'string1';
console.log(test);// string1
var test = 'string2';
console.log(test);// string2
유연한 사용 방식에 편할 수는 있지만 혼란을 야기하기 쉽다
let test = 'string1';
console.log(test);// string1
// let test = 'string2';
// SyntaxError: Identifier 'test' has already been declared
test = 'string2'
console.log(test);// string2
const test = 'string1';
console.log(test);// string1
test = 'string2';
console.log(test);
// TypeError: Assignment to constant variable.
const
를 사용하고 재할당이 필요한 경우 let
을 사용하는 것이 좋다var
변수 선언과 함수 선언문 에서만 일어난다고 생각하자console.log(test1);// undefined
var test1 = 'hoisting';
//var 호이스팅 1단계 선언, 2단계 초기화 진행후 출력
console.log(test2);// ReferenceError: Cannot access 'test2' before initialization
let test2 = 'hoisting';
console.log(test3);// ReferenceError: Cannot access 'test3' before initialization
const test3 = 'hoisting';
//let 호이스팅 1단계 까지만 진행됨
test_func1();// hosting
function test_func1(){
console.log('hoisting');
}
test_func2();// TypeError: test_func2 is not a function
var test_func2 = function(){
console.log('hoisting');
}
String과 Number형을 더하면 항상 String 형으로 변환됩니다.
let test = 200 + '10';
console.log(test);// 20010
console.log(typeof(test));// string
//뺄셈
test = '200'- 10;
console.log(test);// 190
console.log(typeof(test));// number
push는 array의 마지막 부분, 즉 꼬리에 요소들을 추가하고,
unshift는 array의 맨 앞부분, 즉 머리에 요소를 추가합니다.
null은 말그대로 아무것도 아닌 빈 객체를 가리고 있어서 object라고 나옵니다.
lastName에 toUpperCase 함수를 사용한다고 lastName 변수의 값 자체가 바뀌지는 않았습니다.
lastName는 이전 값을 그대로 갖고 있습니다.
indexOf() 함수는 문자열에 특정 문자열이 들어있는지 확인하고,
만약 있다면 몇번째 순서(index) 에 해당 문자열이 있는지 알려줍니다.
해당 문자열이 없다면 -1을 반환합니다.
Number 함수를 사용해서 String에서 Number형으로 전환할 수 있습니다.
Number함수 말고 parseInt, parseFloat 등이 있습니다.
Number형에서 String형으로 변환하고 싶을 수도 있습니다. toString()
console.log(Number("1.901"));// 1.901
console.log(parseInt("1.901"));// 1
console.log(parseFloat("1.901"));// 1.901
min, max 사이의 랜덤 숫자를 구하는 함수식?
function getRandomNumber (min, max) {
return Math.floor((Math.random() * (max - min + 1)) + min);
}
var
객체이름 = {property이름1 : property값1, property이름2 : property값2}JavaScript에서 scope이란, '변수가 어디까지 쓰일 수 있는지'의 범위를 의미합니다.
코드가 block으로 명확하게 구분되기 때문에 코드 가독성이 올라갑니다.
코드가 한줄한줄 쭉 나열된 것이 아니라 각각의 기능별로 block을 나누면 코드가 이해하기 쉬워집니다.'
즉, 한마디로 요약하면 global 변수는 쓰지 않도록 노력해야 하고,
최대한 {}내에서 let, const을 사용하여 변수를 새로 만들어서 쓰자는 말입니다.
위에서 class instance를 생성했습니다.
인스턴스(Instance)는 class를 통해 생성된 객체입니다.
인스턴스는 class의 property이름과 method를 갖는 객체입니다.
인스턴스 마다 모두 다른 property 값을 갖고 있습니다.
인스턴스는 Class 이름에 new를 붙여서 생성합니다.
클래스 이름 우측에 () 괄호를 열고 닫고, 내부에는 constructor에서 필요한 정보를 인자로 넘겨줍니다.
객체가 프로퍼티 값으로 갖고 있는 함수를 메서드라고 부릅니다
class Car {
constructor(name, price) {// 생성자
this.name = name;
this.price = price;
this.department = "선릉지점";
}
applyDiscount(discount) {// 메서드
return this.price * discount;
}
changeDepartment(departmentName) {// 메서드
this.department = departmentName;
}
}
const morning = new Car('Morning', 20000000);// 인스턴스화(new 필수)
console.log(morning);// Car { name: 'Morning', price: 20000000, department: '선릉지점' }
// 인스턴스 출력
객체의 키에는 스페이스, 한글, 특수문자 등이 들어갈 수 있습니다.
변수(variable) 선언할 때는 할 수 없었던 표현입니다.
let difficult = {
33: '숫자 형식도 되네',
'my name': '스페이스 포함 가능',
color: 'silver',
키: '한글인 키는 따옴표가 없어도 되는군!!',
'!키': '느낌표 있는 키는 따옴표가 필요하군',
$special: '$는 없어도 되는군'
};
const getName1 = function(name){};
const getName2 = name => {};
function hi1(text){
text += '하세요';
return text;
}
const hi2 = text => {
text += '하세요';
return text;
}
function func1(name){
return name;
}
const func2 = name => name;
const handleEdit = (nickname, interests) => {
const Object = {
nickname:nickname,
interests:interests.split(','),
bio:`제 닉네임은 ${nickname}입니다. 취미는 ${interests}입니다.`
}
return Object;
}
arrow function을 가장 많이 사용할 때는 callback 함수로 사용할 때 입니다.
callback 함수란, 인자로 전달되는 함수라고 생각하시면 됩니다.
const arr = [1,2,3];
console.log(arr.map(x=>x*x));// [1,4,9]
let test = [1,2,3,4];
test.forEach(i => {test.push(i+1)});// return 값은 없다
console.log(test);//[1,2,3,4,2,3,4,5]
const information = {
name: '김개발'
}
const verb = 'developes'
const project = 'facebook'
information[verb] = project // [A] 값을 할당받은 변수를 활용하는 방식
information.developes = 'facebook' // [B] 값을 직접 활용하는 방식
console.log(information);// { name: '김개발', developes: 'facebook' }