这几天逛CSDN论坛,发现在一些前端模块发的问题大都是因为var、let和const搞不清楚导致的,今天我来浅析下,希望对看到这篇博客的童鞋有所帮助~
우리가 알고있는 것은 것을 ... (영작문 보편적 시작)입니다 VAR,하자 CONST : 자바 스크립트 방식을 선언 한 세 개의 변수가 있습니다.
수 (1)
(1) 정의 된 변수 VAR 수정할 수 후 초기화가 출력되지 않는 경우 undefined
, 오류 없음.
var a;
console.log(a); // undefined
// -----------------------------
console.log(a); // undefined
var a = 1;
(2) VAR 블록 액세스 전반에 걸쳐 기능을 액세스 할 수없는 변수를 정의 하였다.
(3) 만 VAR 함수 범위는 블록 레벨 범위하지.
(4)가 VAR 함수의 범위 범위가 로컬 변수를 선언 할 수 있으며, 전역 변수 VAR을 선언 할 수있다. A의 函数内
VAR 변수로 선언하고, 변수는 只
이 기능이 유효.
- 글로벌 변수 : 변수 외부 함수 코드 파일의 전체 범위를 정의.
- 로컬 변수 : 변수 함수에서 정의 된 현재의 범위의 내부 기능이다.
var a = 666;
console.log("函数外var定义a:" + a); // 函数外var定义a:666
function cg(){
a = 888;
console.log("函数内var定义a:" + a);// 函数内var定义a:888
}
cg();
console.log("函数调用后var定义a为函数内部修改值:" + a);
// 函数调用后var定义a为函数内部修改值:888
(5)는 후자의 이전 값, 덮어 쓰기를 반복해서 정의 될 수있다.
var a = 1;
var a = 2;
console.log(a); // 2
하자 (2)
. (1)는 블록 레벨 범위가하자 내부 함수 정의 외부 기능에 영향을 사용하지하게된다.
let a = 666;
console.log("函数外let 定义a:" + a); // 函数外let 定义a:666
function cg(){
let a = 888;
console.log("函数内let 定义a:" + a);// 函数内let 定义a:888
}
cg();
console.log("函数调用后let 定义a为函数内部修改值:" + a);
// 函数调用后let定义a为函数内部修改值:666
(2) 그렇지 않으면 오류가 발생하지, 사전에 어떤 변수 선언이 없습니다.
console.log(a);
let a = 1;
전용 블록 영역에 액세스 할 수있다 (3)하도록 정의 변수가 아니라 크로스 블록 액세스를 할 수있다, 그것을 넘을 수 없다 함수 액세스.
var c=11;
{
let c=12;
console.log(c);// 12
}
console.log(c);// 11
(4) 다시 정의 할 수 없습니다, 그렇지 않으면 오류가됩니다.
let a = 1;
let a = 2;
console.log(a);
3. CONST
(1) CONST 변수 정의 不可以
수정 및 必须
초기화.
const b = 2;// 正确
const b; // 错误,必须初始化
(2) 일반적 CONST 상수를 선언하는 데 사용하고, 일정한 선언을 변경하도록 허용되지 않은, 그 것이다 只读属性
에 따라서 필요한 声明的同时赋值
.
(3) const를하고 보자는 중복 정의를 허용하지 않는, 블록 레벨 범위 만 블록 범위, 죽은 임시 존재, 사전에 어떤 변수 선언이없는 액세스 할 수 있습니다.
const b = 2;
const b = 2;
console.log(b);
마지막으로, 우리는 사용할 수 있습니다 闭包
, 글로벌 오염을 방지 볼 : 폐쇄 원리