let result = condition ? value1 : value2;
평가 대상인 condition이 truthy라면 value1이, 그렇지 않으면 value2가 반환.
함수 내에서 선언한 변수인 지역 변수(local variable)는 함수 안에서만 접근할 수 있음.
function showMessage() {
let message = "안녕하세요!";// 지역 변수
alert( message );
}
showMessage();// 안녕하세요!
alert( message );// ReferenceError: message is not defined (message는 함수 내 지역 변수이기 때문에 에러가 발생.)
함수 내부에서 함수 외부의 변수인 외부 변수(outer variable)에 접근할 수 있음.
let userName = 'Blake';
function showMessage() {
let message = 'Hello, ' + userName;
alert(message);
}
showMessage();// Hello, Blake
함수에선 외부 변수에 접근하는 것뿐만 아니라, 수정도 할 수 있음.
let userName = 'John';
function showMessage() {
userName = "Bob";// (1) 외부 변수를 수정함let message = 'Hello, ' + userName;
alert(message);
}
alert( userName );// 함수 호출 전이므로 John 이 출력됨
showMessage();
alert( userName );// 함수에 의해 Bob 으로 값이 바뀜
외부 변수는 지역 변수가 없는 경우에만 사용할 수 있음.
함수 내부에 외부 변수와 동일한 이름을 가진 변수가 선언되었다면, 내부 변수는 외부 변수를 가림.
함수 내부에 외부 변수와 동일한 이름을 가진 지역 변수 userName가 선언되어 있음
외부 변수는 내부 변수에 가려져 값이 수정되지 않음.
let userName = 'John';
function showMessage() {
let userName = "Bob";// 같은 이름을 가진 지역 변수를 선언합니다.let message = 'Hello, ' + userName;// Bob
alert(message);
}
// 함수는 내부 변수인 userName만 사용합니다,
showMessage();
alert( userName );// 함수는 외부 변수에 접근하지 않음. 따라서 값이 변경되지 않고, John이 출력.
전역 변수
let sum = (a, b) => a + b;
/* 위 화살표 함수는 아래 함수의 축약 버전.
let sum = function(a, b) {
return a + b;
};
*/
alert( sum(1, 2) );// 3