JavaScript에서 변수를 선언하는 4가지 방법: 1. "var"를 사용하여 "var a;"와 같은 변수를 선언합니다. 2. "function"을 사용하여 "function Fun (num) {}"과 같은 변수를 선언합니다. 3. "let"을 사용하여 변수를 선언합니다. 4. "const"를 사용하여 변수를 선언합니다.

이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.
변수 선언 방법
JavaScript에서 변수를 선언하는 방법에는 여러 가지가 있습니다.
- ES6 이전에는 var와 function이었습니다.
- ES6의 새로운 let과 const
함수는 변수를 선언하는 방법이라고요?
확인해 보겠습니다
확인 방법 1:
1 2 3 4 5 6 7 8 9 | function repeatFun (num) {
return num;
}
repeatFun(10);
var repeatFun = 1;
repeatFun(2);
|
로그인 후 복사
이 방법은 var를 사용하여 변수를 반복적으로 선언하는 방법이지만 후자가 전자를 덮어씁니다.
여기서 무슨 일이 일어나는지 살펴보겠습니다.
- 먼저 선언합니다. 이름은peatFun
- 한 번 호출하면 결과는 10
- 그런 다음 var를 사용하여peatFun을 다시 선언하고 1로 초기화합니다
- 마지막으로peatFun 함수를 한 번 호출
- 결과는 오류입니다. 내용:repeatFun은 함수가 아닙니다
실행 결과에 따르면 브라우저의 메모리에 RepeatFun 변수가 있음을 유추할 수 있습니다. 이전에는 함수였지만 나중에 var 키워드로 다시 선언되어 처음에는 다음과 같이 인식되었습니다. 1.
검증 방법 2:
1 2 3 4 5 6 7 | {
let repeatFun = 1;
function repeatFun (num) {
return num
}
}
|
로그인 후 복사
두 번째 방법은
ES6의 구문을 사용하는 것입니다. let을 반복적으로 선언할 수 없다는 기능을 사용하여 함수도 변수를 선언하는 방법임을 증명합니다
var, let, and const는 다릅니다. 포인트:
변수 선언 승격
- var에는 변수 선언 승격 기능이 있는데 먼저 사용한 다음 선언할 수 있으며 그 반대는 true입니다
- let과 const에는 변수 기능이 없습니다. 선언 승격이며 먼저 선언해야 사용할 수 있습니다
중복 선언
- var는 반복적으로 선언할 수 있으며 후자는 전자를 포함합니다.
- let 및 const는 반복적으로 선언할 수 없습니다
scope scope
- var의 범위는 함수로 제한됩니다
- let과 const는 블록 범위입니다.
- var는 전역 변수와 지역 변수를 정의할 수 있고, let과 const는 지역 변수만 정의할 수 있습니다.
const의 특별한 점
- 선언 후에는 수정할 수 없습니다. (참조형과 기본형 성능이 군데군데 다릅니다)
변수 선언 승격
- var에는 변수 선언 승격 기능이 있어서 먼저 사용한 후 선언하면 됩니다
- let과 const에는 변수 선언 승격 기능이 없습니다. 먼저 선언만 사용할 수 있습니다.
예제 1, var 변수 승격 확인:
1 2 | var b = a + 1;
var a = 1;
|
로그인 후 복사
먼저 변수 b를 선언하고 초기화한 값은 다음과 같습니다. a + 1 (a의 값은 무엇입니까?) <br/> 그런 다음 처음에 1로 인식되는 변수 a를 선언합니다. <br/> 코드가 표면적으로 수행하는 작업이지만 실제로 수행하는 작업은 다음과 같습니다.
- Every 변수가 선언되면 해당 선언은 코드 상단에 있으며 모두 한 번 초기화해야 하며 값은 정의되지 않았지만 할당 위치는 변경되지 않습니다.
- 그런 다음 다른 작업을 수행합니다
다음을 작성하여 동일한 효과를 얻을 수 있습니다.
1 2 3 4 5 | var b;
var a;
b = a +1;
a = 1;
|
로그인 후 복사
let 및 const는 var
예제 2와 다르게 동작합니다. let에 변수 승격이 있는지 확인합니다.
1 2 | let b = a + 1;
let a = 1;
|
로그인 후 복사
변경하면 범위 오류가 직접 발생합니다. 이렇게 하면 오류가 발생하지 않습니다.
1 2 | let a = 1;
let b = a + 1;
|
로그인 후 복사
const 및 변수 승격 측면에서 let의 성능은 일관됩니다
중복 선언
범위 범위
- var의 범위는 함수에 의해 제한됩니다.
- let과 const는 블록 범위입니다.
- var는 전역 변수와 지역 변수를 정의할 수 있고, let과 const는 지역 변수만 정의할 수 있습니다. 변수
사용되지 않는 계승 함수를 예제로 캡슐화합니다. 꼬리 재귀는 for와 if의 조합을 사용하여 달성됩니다. <br/> 예제 1, 계승 함수는 범위의 범위를 확인합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | var num = 5;
function factorial(num) {
var result = 1,resultValue = 0;
for (let i = num - 1; i >= 1; i--) {
if (i === num - 1) {
resultValue = num * i;
} else {
resultValue = num * i / num;
}
result *= resultValue;
}
return result;
}
factorial(num);
|
로그인 후 복사
const는 let in과 동일하게 동작합니다. 범위의 범위
예제 2, const의 범위 확인:
1 2 3 4 5 | {
const NUM_1 = 10;
}
let b = NUM_1 + 1;
|
로그인 후 복사
예 3, var가 전역 변수를 정의할 수 있는지 확인, let과 const는 지역 변수만 정의할 수 있음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | let name = 'let scoped';
let obj = {
name: 'myName',
sayName () {
return function () {
console.log(this.name);
};
}
}
obj.sayName()();
console.log(window);
|
로그인 후 복사

若这样改一下就可以得到我们想要的值:
- 把用 var 定义的 name 的代码取消注释,把用 let 定义的 name 的代码注释。
这个同时也涉及到新问题 this 的指向。后面的文章再详细举例验证
const 的特殊之处
const 与 let , var 其实还是有些地方不一样的
例子1:验证 const 的特殊之处(一)<br/>
1 2 | const NUM = 100;
NUM = 1000;
|
로그인 후 복사
- 经过 const 方式进行声明,之后赋值完毕,则不可以进行改变,否则会报错
但是也有例外
例子二:验证 const 的特殊之处(二)
1 2 3 4 5 6 7 8 9 10 | const obj = {
name: 'xiaoMing',
sayName () {
return this.name
}
};
obj.sayName();
obj.name = 'xiaoHong';
obj.sayName();
|
로그인 후 복사
- 使用 const 首先声明一个变量 obj , 并且这个变量指向我们在内存中创建的对象,你会发现我们改变里面的属性是没有任何问题
若这样改一下: <br/> 例子三:验证 const 的特殊之处(三)
1 2 3 4 5 6 7 8 | const obj = {
name:'xiaoMing',
sayName(){
return this.name
}
};
obj = {};
|
로그인 후 복사
- 若改变该变量的指向的对象,则就会报错。这种错误和 「 验证 const 的特殊之处(一)」的错误是一样的
更多编程相关知识,请访问:编程视频!!
위 내용은 자바스크립트에서 변수를 선언하는 4가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!