반응형
반응형

📝함수 선언

function sum(a,b){
	var result = a + b;
	return result; 
}

console.log(sum(10,20)); // return 값이 없으면 출력을 못 한다.

// 함수 만들기

function 함수이름(sum) 인자값(a,b) {

    ... 내용

}

 

 

📝callback함수 [Prompt]

function sum(a,b,callback){
	var result = a + b;

	callback();
	return result;
}

var r = sum(10,20,function(){
	alert('a + b를 더했습니다.'); // chrome
}); // 여기에서 바로 alert이 실행된다.

console.log(r); // 30

// 콜백함수 (함수를 매개변수로 전달할 수 있다. 이걸 콜백함수라고 한다.)
// 여기에서 보면 sum이라는 함수는 처음에 10(a) + 20(b) 를하고 매개변수로 받은 function()을 실행시킨다.

콜백함란 파라미터로 함수를 전달받아, 함수의 내부에서 실행하는 함수입니다.

 

와같이 매개변수( function(){...}) 함수를 매개변수로 받아

함수(sum)을 실행 시키면 alert('a + b를 더했습니다.'); 실행됩니다.

 

(chrome 개발자화면에서 실행시켜주세요)

 

 

var customer_name =["Lee","Kim","Park"];

customer_name[0]="Sung";
console.log(customer_name[0]);
// 인덱스

customer_name[3]="Jung";
console.log(customer_name[3]);
// 추가

var my_list = ["string",5,["sub1","sub2"]];
console.log(my_list[0]);
console.log(my_list[2][1]);
// 이차원 배열

배열은[ ]으로 구성되어있습니다. (var customer_name =["Lee","Kim","Park"];)

 

[0] [1]로 인덱스 지정 접근할 수 있고 값이 있으면 수정도 가능합니다. (customer_name[0]="Sung";)

 

없는 인덱스를 지정해 추가할 수도 있습니다. (var my_list = ["string",5,["sub1","sub2"]];)

 

var customer_name =["Lee","Kim","Park"];

var search_name = prompt('이름 조회','조회할 이름을 입력하세요'); // chrome

for(var i = 0 ; i < customer_name.length ; i++){
	if(search_name == customer_name[i]){
		console.log(customer_name[i]);
	}
}
// 내가 찾고자하는 이름 출력

내가 찾고자하는 이름을 prompt라는 기능을 이용해서 찾을 수 있습니다.

 

적은 값이 search_name에 들어가고 그거와 for문을 돌아 배열값에 똑같은 걸 찾아 출력합니다.

 

📝익명 함수

// callback function
function printQuizResult(answer, userAnswer, printYes, printNo){
    
    if(answer === userAnswer) printYes();
    else printNo();

}

// anonymous function (익명 함수)
//  - you can use debug easily
//  - you can use recursion
const printYes = function(){
    console.log('정답입니다.')
}

const printNo = function(){
    console.log('틀렸습니다.')
}

console.log('자바스크립트 스펠링을 적어주세요')
printQuizResult('javascript','javascript',printYes, printNo);

// 함수형 프로그래밍은 호이스팅이 안 된다.

 

반응형
반응형

📝if문

var i = 5;

if(i == 5){
	console.log("i와 5는 같습니다.");
}else{
	console.log("i와 5는 같지 않습니다.."); 
}

// if문

 

📝for문

var number = 5;

for(var i = 1; i < 10 ; i++){
	console.log(number * i );
}

 

📝switch-case문

var answer = 3;
switch(answer){
	case 1:
		msg = "틀렸습니다.";
		break;
	case 2:
		msg = "틀렸습니다.";
		break;
	case 3:
		msg = "정답입니다.";
		break;
	default:
		msg = "잘못 입력하셨습니다."
		break;
}
console.log(msg);

 

📝삼항연산자

// 삼항연산자
console.log('5 > 3 ? ' + (5 > 3 ? 'yes' : 'no'));
반응형
반응형

📝 console.log()

출력하는 함수입니다. print와 같다고 생각하시면 됩니다.

console.log(5 * 1 );
console.log(5 * 2 );
console.log(5 * 3 );
console.log(5 * 4 );
console.log(5 * 5 );
console.log(5 * 6 );
console.log(5 * 7 );
console.log(5 * 8 );
console.log(5 * 9 );

// console.log 예제

 

📝Javascript 변수 타입

var number = 5; // 숫자
var string = "고양이"; // 문자
var bool = true; // boolean
var array = []; // 배열
var object = {}; // 객체
var who_am_i; // 변수에 값 지정 안 함

console.log(typeof number ); // number
console.log(typeof string ); // string
console.log(typeof bool ); // boolean
console.log(typeof array ); // object
console.log(typeof object ); // object
console.log(typeof who_am_i ); // undefined

자바스크립트 변수는 동적타입으로 할당된 값에 따라 자동으로 지정됩니다

 

 

📝Symbol

const id1 = Symbol('id');
const id2 = Symbol('id');

console.log(id1 === id2); // false

const id = Symbol('id');
const age = Symbol(20);
const user = {
    name : 'Mike',
    age : 30,
    [id] : 'myid',
    [age] : 20
}

console.log(Object.keys(user));    // [ 'name', 'age' ]
console.log(Object.values(user));  // [ 'Mike', 30 ]
console.log(Object.entries(user)); // [ [ 'name', 'Mike' ], [ 'age', 30 ] ]

심볼의 경우 유일한 식별자로 유일성을 보장하는데 그래서 같은 형태로 만들어도 같지 않습니다. 또한 객체에서 값을 추출할 때 값이 출력이 안 됩니다 아래와 같이 활용이 가능하다는데 솔직히 제대로 안 써봐서 잘 모르겠습니다.

 

const user = {name :"Mike", age: 30, showAge : () => {console.log(this.age)}}
const showName = Symbol("show name");

user[showName] = function () { // user.showName으로 접근시 Symbol객체로 안 들어가니 []로 사용 유의
    console.log(this.name);
}

user[showName]();  // Mike
console.log(user);
// {
//     name: 'Mike',
//     age: 30,
//     showAge: [Function: showAge],
//     [Symbol(show name)]: [Function (anonymous)]
// }


for (let key in user) {
    console.log(`key : ${key}, value : ${user[key]}`);
    // key : name, value : Mike
    // key : age, value : 30
    // key : showAge, value : () => {console.log(this.age)}

}

showAge의 경우 출력이 되지만 Synmbol로 선언한 거는 노출이 안 되는 걸 확인 할 수 있습니다

 

🔗 참고 및 출처

https://www.youtube.com/watch?v=E9uCNn6BaGQ&list=PLZKTXPmaJk8JZ2NAC538UzhY_UNqMdZB4&index=4

 

반응형
반응형

📝var vs let vs const (호이스팅, TDZ)

 

진행하기 전에 호이스팅 및 TDZ라는 개념을 알아야하는데 호이스팅이란 스코프 단위로 선언한 변수를 최상위로 올리는 단계를 의미하고 TDZ(Temproal Dead Zone)의 경우 값을 사용할 수 없는 영역이라고 생각하면 된다.

 

각 변수 타입에 따른 값 할당에 대한 단계가 존재한다

 

var 변수 (호이스팅 작동)

  1. 선언 및 초기화 단계 [var name = 'Mike'을 읽고 var name;으로 호이스팅 시켜 선언 및 초기화(undefined) 작업]
  2. 할당 단계 [var name = 'Mike' 실행 단계에 오면 호이스팅 시킨 변수에 값을 할당한다]
console.log(name); //undefined [호이스팅으로 사용 가능]

var name = 'Mike'
console.log(name); // Mike
var name = 'Bob'   // 이런식으로 재할당 가능
console.log(name); // Bob

/** ----- var는 블록 스코프 밖에서도 사용 가능 ----- **/
const age = 30;

if(age > 19){
    var txt = '성인';
}

console.log(txt); // 성인

또한 var name = 'Bob'으로 재할당이 가능하다 이로 인해 일반적으로 작동하는 프로그래밍 단계에서 이상한 현상이 발견 될 수 있고 또한 var는 블록스코프 내에서 선언한 것도 cosnt와 let하고 다르게 사용이 가능하기 때문에 생각한대로 프로그램 로직이 안 돌 수 있기 때문에 var 사용을 지양한다 [다만 함수 스코프 내에서는 밖에서 사용 불가능]

 

 

let변수 (호이스팅 작동 + TDZ에 선언)

  1. 선언 단계     [let name = "Mike"를 읽고 let name;으로 호이스팅 시키지만 TDZ에 선언 되어 사용 불가]
  2. 초기화 단계 [let name = "Mike" 실행 단계에 오면 호이스팅 시킨 변수에 undefined으로 초기화]
  3. 할당 단계     ['Mike'라는 값을 할당하게 된다]
console.log(name); // Error 발생 (TDZ에 선언 되어서 사용 불가)
let age;

let name = "Mike";
let name = "Bob";  // Error 발생 (Identifier 'name' has already been declared)

 

 

const 변수 (호이스팅 작동 + TDZ에 선언)

  1. 선언 + 초기화 + 할당 [const name = "Mike"를 읽고 호이스팅 후 TDZ에 선언한다]
console.log(name); // Error (Cannot access 'name' before initialization)
const name = "Mike";

name = "Bob";      // Error (Assignment to constant variable)

const age;         // Error 반드시 선언 즉시 값 할당 필요

 

📝null

null이라는 값이 할당된 경우

 

📝undefined

선언은 되었지만 아무런 값도 할당되지 않은 경우

 

📝NaN

경우 문자를 숫자로 나누려는 등의 행동

 

📝지역 변수, 전역변수

function car(){
	var carName = "matiz";
}
console.log(carName); // 에러 carName이 지역변수이기 때문에

var carName ="matiz";
console.log(carName); // matize 전역변수를 호출했기 때문에 가능하다.

// 지역변수 전역변수

지역변수란 그 지역에서만 쓸 수 있는 걸로 function car(){ var carName ="matize } carName이 function안에

선언되어있죠? 이처럼 한정된 중괄호 지역에서 쓸 수 있는 게 지역변수 입니다. 그리고 어디서나 쓸 수 있는게 전역변수입니다.

 

 

 

 

🔗 참고 및 출처

https://www.youtube.com/watch?v=ocGc-AmWSnQ&list=PLZKTXPmaJk8JZ2NAC538UzhY_UNqMdZB4

반응형
반응형

📝인라인 자바스크립트

<h1 onclick="alert('ok!')">인라인 방식 자바스크립트</h1>
<h1>내부 자바스크립트</h1>

 

📝내부 자바스크립트

<body>
  <h1>인라인 방식 자바스크립트</h1>
  <h1 id="internal">내부 자바스크립트</h1>

<script>

  var internal = document.getElementById('internal');

  internal.onclick = function(){

  alert("ok!");

  }
</script>
</body>

 

 

📝외부 자바스크립트

<head>
	<script src="external.js"></script>
</head>
<body>
	<h1>외부 자바스크립트</h1>
</body>

 

반응형