자바스크립트 데이터 타입에는 대표적으로 Primitive Type 과 Reference 타입으로 나뉜다.
어제 공부한 내용을 토대로, Primtive Type 에는 number, string, boolean, null & undefined이 있다.
강의에서 잠깐 스쳐지나간 null & undefined의 차이점은 무엇인지 궁금해졌다. 처음 replit 의 마크다운 부분을 읽다가 조금 헷갈렸지만 여러 글을 읽어보니 차이점을 알게 됐다. 가장 바로 이해가 갔더 링크 첨부 🔻
What is the difference between null and undefined in JavaScript?
let name;
console.log(name); // undefined
console.log(typeof name); //undefined
let name = null;
console.log(name); //null;
console.log(typeof name); // object
null === undefined // false; (엄격한 비교: 값과 자료형)
null == undefined // true; (유형변환 비교: 값만 비교)
null == null //true
null = 'value';
undefined = 'value' // value;
위의 첨부한 내용을 찬찬히 읽어보는데 이런 댓글이 있었음.
Quote from the book Professional JS For Web Devel``opers (Wrox): "You may wonder why the typeof operator returns 'object' for a value that is null. This was actually an error in the original JavaScript implementation that was then copied in ECMAScript. Today, it is rationalized that null is considered a placeholder for an object, even though, technically, it is a primitive value."– Captain Sensible Nov 3 '11 at 14:54
간단히 요약하자면, 초창기 자바스크립트 만들 때 생긴 에러이다. (ECMA6에서 가져오면서 난 실수인듯? ) 현재는 null는 primitive type이지만 object로 간주된다.
정의 : 자바스크립트에서 기본적인 구성 블록 중 하나. 함수는 작업을 수행하거나 값을 계산하는 문장 집합 같은 자바스크립트 절차 (from MDN);
function이 동작 할 수 있는 방법 3가지 (꼭 input,function,output 다 있어야 한다는 의미가 아님 )
function sayHello () {
return console.log('Hello!');
}
function greetings(name){
return console.log(`Hello ${name}`);
}
sayHello();
//hello
greetings('Kim')
//Hello Kim
원리는 간단하다. 함수를 선언을 하고 선언된 함수를 호출한다. 여기서 중요한 포인트는 선언한 function을 호출하지 않으면, 아무런 기능을 수행하지 않는다는 점이다.
function hello(){
console.log('hello')
}
//위와 같이 function을 정의했으니까 console.log에 분명 'hi'가 찍히거라고 예상한다면, 잘못된 생각이다.
//지금 이상태는 그냥 function을 선언만 해주었을 뿐, 기능이 호출되지 않는다.
// 만약 호출하고 싶다면, hello()로 호출해주면 된다.
hello();
//hello
functio에서 return은 값을 반환 혹은 ;ouput을 생성’이라고 생각하면 된다. 그렇다면 console.log()와 다른 점은 무엇일까?
1) 출력한 결과
function sayHello1(){
let friend = 'Code Kim';
console.log('Return '+ friend);
}
sayHello1();
//"Return Code Kim"
sayHello1 함수를 선언하고, 호출하면 콘솔창에 "Return Code Kim” 이라고 뜬다. 만약 console.log() 대신 return 넣는다면?
function sayHello2(){
let friend = 'Code Kim';
return 'Return' + friend;
}
sayHello2();
값은 반환됐지만, 콘솔로그에 찍히지는 않았다. 그렇다면 return 값이 제대로 반환 됐는지 확인 하려면 어떻해야 할까?
function sayHello2(){
let friend = 'Code Kim';
return 'Return ' + friend;
}
console.log(sayHello2());
function sayHello2(){
let friend = 'Code Kim';
return 'Return ' + friend;
}
let result = sayHello2()
console.log(result)
2) 변수에 할당 가능여부
let number = console.log(1000);
//1000
console.log(number)
//undefined
정의: 함수에 전달할 인수의 이름
function addNumbers(num1, num2){
return num1 + num2;
}
addNumbers(3,5)
console.log(addNumbers(3,5)) // *
Parameter는 함수 선언, argument는 함수 호출시의 인수를 의미
function guestName(lastName, firstName){
return lastName + firstName
}
guestName('Kim','Code');
함수 선언 할때 () 안에 쓰인 lasName,firstName이 즉 매개변수, Parameters 이다.
함수 호출 ()안에 쓰인 ‘Kim’과 ‘Code’이 arguments 이다.
function addNumbers(num1, num2){
return num1 + num2
}
console.log(addNumbers(100,200))
//300
console.log(num1);
// num1 is not defined!