Chapter 03 - norux/javascript_study GitHub Wiki

μžλ°”μŠ€ν¬λ¦½νŠΈ 데이터 νƒ€μž…κ³Ό μ—°μ‚°μž

κΈ°λ³Έ νƒ€μž…

  • 숫자 (Number)
  • λ¬Έμžμ—΄ (String)
  • λΆˆλ¦°κ°’ (Boolean)
  • undefined
  • null

μ°Έμ‘° νƒ€μž… (Object)

  • λ°°μ—΄ (Array)
  • ν•¨μˆ˜ (Function)
  • μ •κ·œν‘œν˜„μ‹
// 슷자 νƒ€μž…
var intNum = 10; var floatNum = 0.1;

// λ¬Έμžμ—΄ νƒ€μž…
var singleQuoteStr = 'single quotestring';
var doubleQuoteStr = "double quote string";
var singleChar = 'a';

// 뢈린 νƒ€μž…
var boolVar = true;

//undefined νƒ€μž…
var emptyVar;

//null νƒ€μž…
var nullVar = null;

숫자

  1. int, float, double 같은 ν˜•νƒœκ°€ μ•„λ‹Œ 단 1개의 μˆ«μžν˜•λ§Œ μ‘΄μž¬ν•œλ‹€.
    즉, μ •μˆ˜ μ‹€μˆ˜ ꡬ뢄이 μ—†λ‹€.
  2. μ •μˆ˜μ™€ μ‹€μˆ˜μ˜ 계산이 ν•„μš”μ‹œ λ°˜λ“œμ‹œ 값을 ν™•μΈν•΄μ•Όν•œλ‹€.

λ¬Έμžμ—΄

  1. μž‘μ€λ”°μ˜΄ν‘œ('), ν°λ”°μ˜΄ν‘œ(") 둜 생성
  2. 1개의 문자λ₯Ό μ„ μ–Έν•œλ‹€κ³  ν•΄μ„œ char 둜 μ„ μ–Έλ˜μ§€ μ•ŠλŠ”λ‹€.
  3. ν•œλ²ˆ μ„ μ–Έν•œ λ¬Έμžμ—΄μ€ λ³€κ²½ν•  수 μ—†λ‹€.
  4. 인덱슀 접근이 κ°€λŠ₯ν•˜λ‹€.
// str λ¬Έμžμ—΄ 생성
var str = 'test';
console.log(str[0], str[1], str[2], str[3]); // (좜λ ₯κ°’) test

// λ¬Έμžμ—΄μ˜ 첫 κΈ€μžλ₯Ό λŒ€λ¬Έμžλ‘œ λ³€κ²½? 
str[0] ='T';
console.log(str); // (좜λ ₯κ°’) test

λΆˆλ¦°κ°’

  1. true, false

nullκ³Ό undefined

  1. λͺ¨λ‘ 값이 λΉ„μ–΄μžˆμŒμ„ λœ»ν•œλ‹€.
  2. undefined 은 ν• λ‹Ήλ˜μ§€ μ•ŠμŒ.
  3. null κ°œλ°œμžκ°€ λͺ…μ‹œμ μœΌλ‘œ λΉ„μ–΄ μžˆμŒμ„ λ‚˜νƒ€λƒ„
// null νƒ€μž… λ³€μˆ˜ μƒ˜μ„±
var nullVar = null,
console.log(typeof nullVar === null); // (좜λ ₯κ°’) false
console.log(nullVar === null); // (좜λ ₯κ°’) true

μ°Έμ‘°νƒ€μž…

  1. λ°°μ—΄, ν•¨μˆ˜, μ •κ·œν‘œν˜„μ‹
  2. μ—¬λŸ¬κ°œμ˜ ν”„λŸ¬νΌν‹°λ₯Ό μ €μž₯ν•  수 μžˆλ‹€.
  3. ν•¨μˆ˜λ„ 포함할 수 μžˆλŠ”λ‹€.(λ©”μ„œλ“œ)

객체 생성 방법

  1. Object() 객체 μƒμ„±μž
//Object()λ₯Ό μ΄μš©ν•΄μ„œ foo 빈 객체 생성 
var foo = new Object();

//foo 객체 ν”„λ‘œνΌν‹° μƒ˜μ„± 
foo.name = 'foo';
foo.age = 30; 
foo.gender = 'male'
  1. 객체 λ¦¬ν„°λŸ΄
// 객체 λ¦¬ν„°λŸ΄ λ°©μ‹μœΌλ‘œ foo 객체 μƒ˜μ„±
var foo = {
    name : 'foo',
    age : 30,
    gender: 'male'
}
  1. μƒμ„±μž ν•¨μˆ˜ (Chapter 04 확인)

객체 ν”„λ‘œνΌν‹° 읽기/μ“°κΈ°/κ°±μ‹ 

var foo = {
    name:'foo',
    major:'computer science'
}

//객체 ν”„λ‘œνΌν‹° κ°±μ‹ 
foo.major = 'test';

//객체 ν”„λ‘œνΌν‹° 동적 생성
foo.age = 30;

// λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•΄μ•Ό ν•  경우
foo[full-name] = 'foo bar',
console.log(foo['full-name'] );
console.log (foo.full-name);

NaN

수치 연산을 ν•΄μ„œ 값을 μ–»μ§€ λͺ»ν–ˆμ„ 경우.

for in

  1. 객체에 ν¬ν•¨λœ ν”„λ‘œνΌν‹° λ£¨ν”„λ‘œ μ ‘κ·Ό
// 객체 λ¦¬ν„°λŸ΄μ„ ν†΅ν•œ foo 객체 μƒ˜μ„±
var foo = {
    name: 'foo',
    age: 38,
    major: 'computer science'
}

//for in 문을 μ΄μš©ν•œ 객체 ν”„λ‘œνΌν‹° 좜λ ₯
var prop;
for (prop in foo) {
console.log(prop, foo[prop]);

ν”„λ‘œνΌν‹° μ‚­μ œ

  1. delete 이용
  2. 객체λ₯Ό μ‚­μ œν•˜λ €κ³  ν•˜λ©΄???

μ°Έμ‘° νƒ€μž…μ˜ νŠΉμ„±

var objA = {
   var :40
}

var objB = objA;

객체비ꡐ

  1. == μ—°μ‚°μžλ‘œ λΉ„κ΅μ‹œ ν”„λ‘œνΌν‹° 비ꡐ가 μ•„λ‹Œ 참쑰비ꡐλ₯Ό ν•œλ‹€.
var a = 100;
var b = 100;
var objA = { value: 100 );
var objB = { value: 100 );
var objC = objB;

console.log(a == b);//(μΆœλŸ­κ°’) true
console.log(objA == objB);//(좜λ ₯κ°’) false
console.log(objB == objC );//(좜λ ₯κ°’) true

참쑰의 μ˜ν•œ ν˜ΈμΆœλ°©μ‹

  1. κΈ°λ³Ένƒ€μž… call by value
  2. μ°Έμ‘°νƒ€μž… call by reference

ν”„λ‘œν† νƒ€μž…

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  κ°μ²΄λŠ” μžμ‹ μ˜ λΆ€λͺ¨ 역할을 ν•˜λŠ” 객체와 μ—°κ²°λ˜μ–΄ μžˆλ‹€. 그리고 이것은 마치 객체지ν–₯의 싱속 κ°œλ…κ΄΄ 같이 λΆ€λͺ¨ 객체의 ν”„λ‘œνΌν‹°λ₯Ό 마치 μ§€μ‹ μ˜ κ²ƒμ²˜λŸΌ μ“Έ 수 μžˆλŠ” 것 같은 νŠΉμ •μ΄ μžˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” 이 λŸ¬ν•œ λΆ€λͺ¨ 객체λ₯Ό ν”„λ‘œν† νƒ€μž… 객체 (μ§§κ²ŒλŠ” ν”„λ‘œν† νƒ€μž…)라고 λΆ€λ₯Έλ‹€.

λ°°μ—΄

  1. λ°°μ—΄ λ¦¬ν„°λŸ΄
var colorArr = ['orange', 'yellow', 'blue'];

var emptyArray = [];

emptyArray[0] = 100;
emptyArray[3] ='eight';
emptyArray[7] = true
console.log(emptyArray.length);
  1. length ν”„λ‘œνΌν‹° λ°°μ—΄λ‚΄μ˜ κ°€μž₯ 큰 인덱슀 1 더합 κ°’
    μ½”λ“œλ₯Ό ν†΅ν•œ λͺ…μ‹œμ  λ³€ν™˜ κ°€λŠ₯
var colorsArray = ['orange' , 'yellow', 'green'];

var colorsObj = {
    '0':'orange',
    '1':'yellow',
    '2':'green'
}

console.log(typeof colorsArray);
console.log(typeof colorsObj);

console.log(colorsArray.length);
console.log(colorsObj.length);

2개의 object 의 proto λ₯Ό λ°˜λ“œμ‹œ ν™•μΈν•˜μž

λ°°μ—΄ ν”„λ‘œν”„νŠΈ 동적 생성

배열도 μžλ°”μŠ€ν¬λ¦½νŠΈ κ°μ²΄μ΄λ―€λ‘œ 인덱슀 숫자 λ°°μ—΄μ›μ†Œκ°€ μ•„λ‹Œ λ¬Έμžλ‘œλ„ λ™μ μœΌλ‘œ 객체λ₯Ό 생성할 수 μžˆλ‹€.

var arr = [];
arr.color = 'blue';
arr['name'] = 'number_array';

λ°°μ—΄μ˜ 프포퍼티 μ—΄κ±°

for / in

λ°°μ—΄ μš”μ†Œ μ‚­μ œ

  1. delete μ—°μ‚°μžλ₯Ό μ΄μš©ν•΄ μ‚­μ œκ°€ κ°€λŠ₯ν•œλ‹€.
var arr = ['zero', 'one', 'two', 'three'];
delete arr[2];
console.log(arr);
console.log(arr.length);
  1. delete μ—°μ‚°μžλŠ” ν•΄λ‹Ή μš”μ†Œμ˜ 값을 undefined 으둜 μ„€μ •ν•  뿐 값을 μ™„μ „νžˆ μ‚­μ œν•˜μ§€ μ•ŠλŠ”λ‹€.<br / > λ°°μ—΄ μ†Œμš”λ₯Ό μ™„μ „νžˆ μ‚­μ œν•˜κΈ° μœ„ν•΄μ„œλŠ” splice λ°°μ—΄ λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•œλ‹€.
var arr = ['zero', 'one', 'two', 'three'];
arr.splice(2, 1);
console.log(arr);
console.log(arr.length);

Array() μƒμ„±μž ν•¨μˆ˜

  1. 배열은 일반적으둜 λ°°μ—΄ λ¦¬ν„°λŸ΄λ‘œ μƒμ„±ν•˜μ§€λ§Œ 결ꡬ Array() μƒμ„±μž ν•¨μˆ˜λ‘œ 배열을 μƒμ„±ν•˜λŠ” 과정을 λ‹¨μˆœν™”μ‹œν‚¨ 것이닀.

  2. new μ—°μ‚°μž μ‚¬μš©

  3. 인자의 κ°―μˆ˜μ— 따라 λ™μž‘μ΄ λ‹€λ₯΄λ‹€.

μœ μ‚¬ 객체 λ°°μ—΄

var obj = {name:'foo', length:1};
Array.prototype.push.apply(obj, ['bez']);

** κΈ°λ³Έ νƒ€μž…κ³Ό ν‘œμ€€ λ©”μ„œλ“œ

  1. toExponential()

  2. charAt()

** +μ—°μ‚°μž **

  1. 두 μ—°μ‚°μž λͺ¨λ‘ 숫자일 κ²½μš°μ—λ§Œ 숫자 연산이 μΌμ–΄λ‚˜κ³  λ‚˜λ¨Έμ§€λŠ” λͺ¨λ‘ 문자 연산이 μΌμ–΄λ‚œλ‹€.

typeof μ—°μ‚°μž

  1. typeof null 은 object 이닀.

  2. ν•¨μˆ˜λŠ” function 이닀.

==(동등)μ—°μ‚°μžμ™€ ===(일치)μ—°μ‚°μž

  1. == μ—°μ‚°μžλŠ” λΉ„κ΅ν•˜λ €λŠ” ν”Όμ—°μ‚°μžμ˜ νƒ€μž…μ΄ λ‹€λ₯Ό 경우 νƒ€μž…λ³€ν™˜μ„ κ±°μΉœλ‹€μŒ λΉ„κ΅ν•œλ‹€.

  2. === μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžμ˜ νƒ€μž…μ„ λ³€κ²½ν•˜μ§€ μ•Šκ³  λΉ„κ΅ν•œλ‹€.

예제)

0 == ""    //true
0 == 0     //true
0 == "0"   //true

0 === ""    //false
0 === 0     //true
0 === "0"   //false

!!μ—°μ‚°μž

  1. ν”Όμ—°μ‚°μžλ₯Ό λΆˆλ¦°κ°’μœΌλ‘œ λ³€κ²½ν•œλ‹€.

#3μž₯ 끝

⚠️ **GitHub.com Fallback** ⚠️