목차
function과 배열
var a=1111;
console.log(a);
function f1(){
console.log(a);
}
console.log(a);
f1();
console.log(a);
const b=[];
b.push('item1');
b.push('item2');
console.log(b);
let 사용하기
let a='key2';
let arr1={'key1':'val1',a:'val2'};
console.log(arr1.key1);
console.log(arr1.a);
console.log(arr1[a]);// undefined
let arr2={key1:'val1',key2:'val2'};
console.log(arr2['key1']);
console.log(arr2.key1);
// JSON 키는 문자열을 사용한다.
let msg=JSON.stringify(arr2);
console.log(msg);
let b=2222;
let c=3333;
let arr3={key1:'val1',a,b,c};
console.log(arr3.a);
console.log(arr3.b);
console.log(arr3.c);
let msg2=JSON.stringify(arr3);
console.log(msg2); // {"key1":"val1","a":"key2","b":2222,"c":3333}
배열 사용하기
const arr1=['item1','item2','item3'];
let [d,e,f]=arr1;
console.log(d,e,f);
let [a,,{key1}]=arr1;
console.log(a,key1);
const obj={'k1':'val1','k2':'val2'};
let {key11,key22}=obj;
console.log(key11,key22);
const arr1=['item1','item2','item3','item4'];
// const arr2=arr1;
// const arr2=[];
// for(let i=0;i<arr1.length;i++){
// arr2.push(arr1[i]);
// }
const arr2=['item0',...arr1,'item_new'];
console.log(arr1);
console.log(arr2);
console.log(arr1==arr2);
반복문 - for, in, of, forEach, map
const arr1=['item1','item2','item3','item4','item5'];
for(let i=0;i<arr1.length;i++){
console.log(arr1[i]);
}
for(idx in arr1){
console.log(arr1[idx]);
}
for(ele of arr1){
console.log(ele);
}
let result1=arr1.forEach((ele,idx)=>{
console.log(ele,idx);
});
let result2=arr1.map(function(a,b){
console.log(a,b);
return 're';
})
console.log(result1); // undefined
console.log(result2); // [ 're', 're', 're', 're', 're' ]
console.log(typeof result1); // undefined
console.log(typeof result2); // object
map, filter, every, some, reduce
const arr1=[1111,2222,3333,4444,5555];
const result1=arr1.map(ele=>ele+1);
console.log(result1); // [ 1112, 2223, 3334, 4445, 5556 ]
const result2=arr1.filter(function(ele){
return ele%2==0;
});
console.log(result2); // [ 2222, 4444 ]
const result3=arr1.every(function(ele){return ele%2==0;});
console.log(result3); // false
const result4=arr1.some(function(ele){return ele%2==0;});
console.log(result4); // true
const result5=arr1.reduce(function(a,b,c,d){
/*
이전의 return 값, next 값, idx, this
1111 2222 1 [ 1111, 2222, 3333, 4444, 5555 ]
undefined 3333 2 [ 1111, 2222, 3333, 4444, 5555 ]
undefined 4444 3 [ 1111, 2222, 3333, 4444, 5555 ]
undefined 5555 4 [ 1111, 2222, 3333, 4444, 5555 ]
*/
console.log(a,b,c,d);
return a+b; // 총합계 구하기
});
console.log(result5);
arrow function
function func1(){}
const func2=function(){};
const func3=()=>{};
function func4(a){}
const func5=function(a){};
const func6=(a)=>{};
const func7=a=>{};
function func8(a,b){}
const func9=function(a,b){};
const func10=(a,b)=>{};
// const func11=a,b=>{}; // 불가능
function func11(){return 'result';}
const func12=function(){return 'result';};
const func13=()=>'result';
const func14=()=>console.log('test'); // undefined가 return된다.
const func15=function(){
console.log(this);
}
/*
<ref *1> Object [global] {
global: [Circular *1],
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
queueMicrotask: [Function: queueMicrotask],
structuredClone: [Function: structuredClone],
atob: [Getter/Setter],
btoa: [Getter/Setter],
performance: [Getter/Setter],
fetch: [Function: fetch],
navigator: [Getter],
crypto: [Getter]
}
*/
func15();
const func16=()=>console.log(this);
// {}
func16();
class
function Func01(){
}
const obj1=new Func01();
console.log(obj1); // Func01 {}
class Func02{
constructor(){
console.log('생성자 호출');
this.a=1111;
}
func1=function(){
console.log('메서드1');
}
func2(){
console.log('메서드2');
}
}
const obj2=new Func02();
console.log('--')
console.log(obj2.a); // 1111
obj2.func1(); // 메서드1
module
const name='홍길동';
const age=20;
// const 방법1
module.exports={name,age};
module.exports={name:'김길동'};
export {name,age};
export const name="Jesse"
export const age=40;
function func(){
console.log('기능 실행');
}
// 방법1
module.exports=func;
// 방법2
module.exports={func};
// 방법3
export {func};
// 방법4
export const func1=func;
// 방법5
export default func;
// commonsjs 방식 //
// const {name,age}=require('./person');
console.log(name,age);
// func 방법1
const func1=require('./person2');
func1();
// func 방법2,3
const {func}=require('./person2');
func();
// func 방법4
const {func1}=require('./person2');
func1();
// es module //
import {name,age} from './person.js'
console.log(name,age);
// func 방법5
import func_new from './person2.js';
func_new();
Console
console.time('시간1');
console.log('log 출력');
console.error('error 출력');
console.warn('warn 출력');
console.log('---');
console.log(__dirname);
console.log(__filename);
console.log('---'); // 환경변수의 value 가져오기
console.log(process.env.id,process.env.pw);
console.log(process.env.JAVA_HOME);
console.log(process.env.pw?process.env.pw:1234);
console.log('---');
setTimeout(()=>{
console.log('병렬 실행');
},3000);
setTimeout(()=>{
console.log('병렬 실행');
},2000);
console.log('병렬 실행');
console.timeEnd('시간1');
console.dir({key1:'val1',key2:'val2',key3:{k1:'key4',k2:'key5'}},{colors:true});
OS
const os=require('os');
console.log(os.arch());
console.log(os.cpus().length);
console.log(os.homedir());
console.log(os.hostname());
console.log(os.platform());
console.log(os.tmpdir());
console.log(os.userInfo());
console.log(os.totalmem());
console.log(os.version());
path
const path=require('path');
console.log(path.sep,path.delimiter); // \ , ;
const msg='C:\\workspace\\..\\.\\workspace\\node01\\ex14.js';
console.log(path.resolve(msg));
const p1=path.parse(msg);
console.log("parse msg: ",p1);
console.log("base: ",p1.base);
console.log("dir: ",p1.dir);
console.log("name: ",p1.name);
console.log("ext: ",p1.ext);
console.log(path.isAbsolute(msg));
const p2='.\\ex02.js'
console.log(path.relative('C:\\',p2));
const p3=path.relative('C:\\',p2)
console.log(path.join('C:\\',p3));
url
const url=require('url');
const msg='https://docs.google.com/spreadsheets/d/13vDNPZZOzazAGY-fegAxKArbAFFju8E00h5NtuVkcZ4/edit?gid=0#gid=0';
const result=url.parse(msg);
console.log(result);
// console.log(result.protocol);
// console.log(result.host);
// console.log(result.port);
// console.log(result.hostname);
// console.log(result.pathname);
// console.log(result.path);
// console.log(result.query);
// console.log(result.search);
// console.log(result.href);
// console.log(result.auth);
console.log('-----');
const myUrl=new url.URL(msg);
console.log(myUrl);
console.log(myUrl.searchParams.keys());
console.log(myUrl.searchParams.values());
console.log(myUrl.searchParams.get('gid'));
// url get values
const query=require('querystring');
let msg="https://www.google.com/search?q=java&id=tester&pw=1234";
msg=msg.split('?')[1];
// [Object: null prototype] { q: 'java', id: 'tester', pw: '1234' }
console.log(query.parse(msg));
// q=java&id=tester&pw=1234
console.log(query.stringify(query.parse(msg)));
encoding
// encoding*
const crypto=require('crypto');
const hash=crypto.createHash('MDG');
hash.update('abcd');
console.log(hash.digest('hex'));
event
// event
const even=require('events');
const emit=new even.EventEmitter();
// 한번만 호출됨
emit.once('evn1',function(e){
console.log('1이벤트');
});
const cb=function(e){
console.log('2이벤트');
};
// 계속 호출 가능
emit.on('evn2',cb);
emit.addListener('evn2',cb);
emit.emit('evn1');
emit.emit('evn2');
console.log(emit.listenerCount('evn2'));
emit.emit('evn1');
emit.emit('evn2');
console.log(emit.listenerCount('evn2'));
emit.off('evn2',cb);
// emit.removeListener('evn2',cb);
emit.emit('evn1');
emit.emit('evn2');
console.log(emit.listenerCount('evn2'));
io
// io
const path=require('path');
const fs=require('fs');
// console.log(fs);
// 폴더 만들기
fs.mkdir(path.join(__dirname,'test1'),function(e){console.log(e);});
// 폴더 지우기
//fs.rm(path.join(__dirname,'test1'),function(e){console.log(e);});
fs.rmdir(path.join(__dirname,'test1'),function(e){console.log(e);});
console.log(fs.readdirSync(__dirname,function(e){console.log(e);}));
파일 읽고 쓰기
const fs=require('fs');
const result=fs.writeFileSync('./ex01.js','// js 작성',{encoding:"utf-8"});
console.log(result);
const msg=fs.readFileSync('./ex01.js',{encoding:"utf-8"});
console.log(msg.toString());
비동기로 파일 읽고 쓰기
비동기로 파일을 쓰고 읽을 때는 파일이 클 경우 순차적으로 진행되지 않을 수 있다.
// 비동기로 파일 읽어오기
const fs=require('fs');
fs.writeFile(
'./ex01.js',
'// javascript로 작성된 파일 내용',
function(e){console.log(e);}
);
fs.readFile(
'./ex01.js',
{encoding:'utf-8'},
function(err,data){
if(err){
throw err;
}
console.log(data);
},
function(e){console.log(e);}
);
async 함수로 작업 순차적으로 진행
// 비동기로 파일 읽어오기
const fs=require('fs');
(async function(){
fs.appendFile;
fs.appendFileSync;
await fs.writeFile(
'./ex01.js',
'// javascript로 작성된 파일 내용',
function(e){console.log(e);}
);
await fs.readFile(
'./ex01.js',
{encoding:'utf-8'},
function(err,data){
if(err){
throw err;
}
console.log(data);
},
function(e){console.log(e);}
);
});
watchfile
const fs=require('fs');
// 파일에 조작이 일어나면 이벤트가 발생함
fs.watchFile(
'./ex01.js',
function(){
console.log("event...");
}
);
const result=fs.writeFileSync('./ex01.js','// js 작성',{encoding:"utf-8"});
console.log(result);
stream
// stream
const fs=require('fs');
const rs=new fs.createReadStream('./ex01.js',{encoding:'utf-8'});
// console.log(rs);
rs.on('data',function(data){
console.log(data);
});
rs.on('end',function(){
console.log('여기까지');
});
open
const fs=require('fs');
fs.open(
'./ex25.js',
'w',
function(e){
console.log(e);
}
);
'100일 챌린지 > 빅데이터기반 인공지능 융합 서비스 개발자' 카테고리의 다른 글
Day 75 - interface, lamda식, stream (0) | 2024.11.14 |
---|---|
Day 74 - JavaScript로 Web Server 만들기 (0) | 2024.11.13 |
Day 74 - Java로 구현하는 backend (NodeJS) (0) | 2024.11.13 |
Day 73 - 배포하기 (0) | 2024.11.12 |
Day 73 - Spring Data JPA를 이용한 CRUD 프로그램 만들기 (2) | 2024.11.12 |