<script></script>
<head>
태그 안에 스크립트 태그, 자바스크립트 소스파일을 사용해 연동한다.<head>
<script src="script.js"></script>
</head>
<body>
태그 맨 밑에 위 태그를 첨부해 외부 자바스크립트 파일을 연동한다.<script type="text/javascript" src="script.js"></script>
<head>
태그안에 asyn
이라는 속성 값 추가<head>
<script asyn src="script.js"></script>
</head>
<head>
태그안에 defer
이라는 속성 값 추가<head>
<script defer src="script.js"></script>
</head>
'use strice';
스크립트 엄격 모드!
name = 'hyerim';
let name;
var 쓰지마!!
1. 자바스크립트 var에서는 선언하기 전 값을 할당할 수 있음.
name = 'hyerim';
var name;
hyerim
2. block scope 존재하지 않음
var은 block을 무시함.
{
name = "hyerim";
var name;
}
console.log(name);
hyerim
블럭을 이용해 변수를 선언해도 아무대서나 출력 가능함.
한번 할당하면 값이 절대 변하지 않음.
const = name
name = "choihyerim";
변수 선언 방법 | 데이터 타입 | 중복 선언 여부 | 스코프 |
---|---|---|---|
var | 변경가능, mutable data type | 변수 중복 선언 허용 | 함수 레벨 스코프 |
let | 변경가능, mutable data type | 변수 중복 선언 불가능 | 블록 레벨 스코프 |
const | 변경 불가능, Immutable data type | 변수 중복 선언 불가능 | 블록 레벨 스코프 |
함수 레벨 스코프: 함수안에 선언된 함수만 지역변수로 간주하며, 나머지는 모두 전역변수로 간주한다.
function hello() {
var a = 1
console.log(a)
}
hello(); // 1
console.log(a) // ReferenceError: a is not defined
if true {
var a = 1;
console.log(a)
}
console.log(a) // 1
코드 블럭 안에 var로 선언한 a 변수가 코드 블럭 밖에서도 출력되는 것을 볼 수 있다.
블록 레벨 스코프 : 함수 내부는 물론, if문이나 for문 등의 코드 블럭{ ... } 에서 선언된 변수도 지역변수로 취급한다.
function hello() {
let a = 1;
console.log(a)
}
hello(); // 1
console.log(a) // ReferenceError: a is not defined
if true {
let a = 1;
console.log(a)
}
console.log(a) // ReferenceError: a is not defined
원시 값(primitive, 또는 원시 자료형)이란 객체가 아니면서 메서드도 가지지 않는 데이터입니다.
const count = 17;
const size = 17.1;
typeof count
"number"
typeof size
"number"
const greet = "hello"
const name = "choihyerim"
const greeting = greet; + name;
typeof greet
"string"
typeof name
"string"
typeof greeting
"string"
const a = 3 > 1;
const b = 3 < 1;
typeof a
"boolean"
typeof b
"boolean"
a
true
b
false
let noting = null;
let x;
let x = undefined;
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
console.log(symbol1 === symbol2);
false
const hyerim = { name: 'hyerim', age: 23 };
hyerim.age = 24;
function plus() {
return a + b
}
변수를 선언할 때 어떤 타입인지 선언하지 않고 할당된 값에 따라 타입이 변경됨.
let text = '안녕'; //type: string
text = 1; //type: number
text = '1' + 2; //type: string
text = '1' / '2'; //type: number
<참고>