JavaScript에서 변수를 선언하는 4가지 방법: 1. "var"를 사용하여 "var a;"와 같은 변수를 선언합니다. 2. "function"을 사용하여 "function Fun (num) {}"과 같은 변수를 선언합니다. 3. "let"을 사용하여 변수를 선언합니다. 4. "const"를 사용하여 변수를 선언합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.
JavaScript에서 변수를 선언하는 방법에는 여러 가지가 있습니다.
확인해 보겠습니다
확인 방법 1:
function repeatFun (num) { return num; } repeatFun(10); // 10 var repeatFun = 1; repeatFun(2); // Uncaught TypeError: repeatFun is not a function
이 방법은 var를 사용하여 변수를 반복적으로 선언하는 방법이지만 후자가 전자를 덮어씁니다.
여기서 무슨 일이 일어나는지 살펴보겠습니다.
실행 결과에 따르면 브라우저의 메모리에 RepeatFun 변수가 있음을 유추할 수 있습니다. 이전에는 함수였지만 나중에 var 키워드로 다시 선언되어 처음에는 다음과 같이 인식되었습니다. 1.
검증 방법 2:
{ let repeatFun = 1; function repeatFun (num) { return num } } // Uncaught SyntaxError: Identifier 'repeatFun' has already been declared
두 번째 방법은
ES6의 구문을 사용하는 것입니다. let을 반복적으로 선언할 수 없다는 기능을 사용하여 함수도 변수를 선언하는 방법임을 증명합니다
변수 선언 승격
중복 선언
scope scope
const의 특별한 점
예제 1, var 변수 승격 확인:
var b = a + 1; // b: NaN var a = 1; // a: 1
먼저 변수 b를 선언하고 초기화한 값은 다음과 같습니다. a + 1 (a의 값은 무엇입니까?) <br/> 그런 다음 처음에 1로 인식되는 변수 a를 선언합니다. <br/> 코드가 표면적으로 수행하는 작업이지만 실제로 수행하는 작업은 다음과 같습니다.
다음을 작성하여 동일한 효과를 얻을 수 있습니다.
var b; var a; b = a +1; // b: NaN a = 1; // a: 1
let 및 const는 var
예제 2와 다르게 동작합니다. let에 변수 승격이 있는지 확인합니다.
let b = a + 1; // Uncaught ReferenceError: a is not defined let a = 1;
변경하면 범위 오류가 직접 발생합니다. 이렇게 하면 오류가 발생하지 않습니다.
let a = 1; // a: 1 let b = a + 1; // b: 2
const 및 변수 승격 측면에서 let의 성능은 일관됩니다
let 및 const는 반복적으로 선언할 수 없습니다
예제 1, var:
var a = 1; var a = 2; var b = a + 1; // 3
예제 2, let의 반복 선언을 확인합니다:
let a = 1; let a = 2; // Uncaught SyntaxError: Identifier 'a' has already been declared
var a = 1; let a = 2; //Uncaught SyntaxError: Identifier 'a' has already been declared
사용되지 않는 계승 함수를 예제로 캡슐화합니다. 꼬리 재귀는 for와 if의 조합을 사용하여 달성됩니다. <br/> 예제 1, 계승 함수는 범위의 범위를 확인합니다.
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; } // i 是用 let 进行定义它的作用域仅仅被限制在 for 循环的区域内 // i++;// Uncaught ReferenceError: i is not defined return result; } // result 是用 var 进行定义,他的活动区域在 factorial 函数内 // result++; // var的作用域.html:34 Uncaught ReferenceError: result is not defined factorial(num); // 120
const는 let in과 동일하게 동작합니다. 범위의 범위
예제 2, const의 범위 확인:
{ const NUM_1 = 10; } let b = NUM_1 + 1; // Uncaught ReferenceError: NUM_1 is not defined
예 3, var가 전역 변수를 정의할 수 있는지 확인, let과 const는 지역 변수만 정의할 수 있음
// 可以挂载到全局作用域上 // var name = 'window scoped'; let name = 'let scoped'; //是不挂载到全局作用域中 let obj = { name: 'myName', sayName () { return function () { console.log(this.name); // 打印出来为空 }; } } obj.sayName()(); console.log(window); //name 这个属性的值没有,如下图
若这样改一下就可以得到我们想要的值:
这个同时也涉及到新问题 this 的指向。后面的文章再详细举例验证
const 与 let , var 其实还是有些地方不一样的
例子1:验证 const 的特殊之处(一)<br/>
const NUM = 100; NUM = 1000; // Uncaught TypeError: Assignment to constant variable
但是也有例外
例子二:验证 const 的特殊之处(二)
const obj = { name: 'xiaoMing', sayName () { return this.name } }; obj.sayName(); // xiaoMing obj.name = 'xiaoHong'; obj.sayName(); // xiaoHong
若这样改一下: <br/> 例子三:验证 const 的特殊之处(三)
const obj = { name:'xiaoMing', sayName(){ return this.name } }; obj = {}; // Uncaught TypeError: Assignment to constant variable
更多编程相关知识,请访问:编程视频!!
위 내용은 자바스크립트에서 변수를 선언하는 4가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!