바로 조건문 안에 result라는 변수를 선언했는데 if 조건문 밖에서 result가 사용이 가능한 정말 기이한 상황이 발생
var score = 90;
if(score >= 80){
var result = "pass";
}else{
var result = "fail";
}
console.log(result);//pass
------------------------------------------------
var score = 90;
if(score >= 80){
let result = "pass";
}else{
let result = "fail";
}
console.log(result); //result is not defined
------------------------------------------------
var score = 90;
function PassOrFail(score){
if(score >= 80){
var result = "pass";
}else{
var result = "fail";
}
};
PassOrFail(score);
console.log(result); //result is not defined
???
심벌은 자기 자신을 제외한 그 어떤 값과도 다른 유일무이한 값을 의미
log.levels = {
DEBUG: Symbol('debug'),
INFO: Symbol('info'),
WARN: Symbol('warn'),
};
log(log.levels.DEBUG, 'debug message');
log(log.levels.INFO, 'info message');
Symbol에 인수를 전달해서 생성된 심벌에 설명을 덧붙일 수 있다.
const arr=[1,2,3,null,undefined,"null"];
const falsyOrTruthy =(arr)=> arr.forEach( value => {
if (!value) {
console.log(`Falsy ${value}`);
}
else
console.log(`Truthy ${value}`);
});
falsyOrTruthy(arr);
/*
Truthy 1
Truthy 2
Truthy 3
Falsy null
Falsy undefined
Truthy null
*/
console.log(10 == "10"); // true
console.log(null == undefined); // true
console.log(10 === "10"); // false
console.log(null === undefined); // false
a??b의 결과는??
a가 null도 아니고 undefined도 아니면 a
그 외의 경우에는 b
let idList = [annie, jiwon,'',undefined,null,0];
const getId=(list)=>{
const result = list.map((id)=>{
id=id??100;
})
console.log(result);
};
getId(idList);
//error
// id = id??100;
// ^
// unexpected token ?