JavaScript에서 변수를 선언하는 키워드는 var, let, const입니다. var로 선언된 변수는 모든 유형의 값을 저장하는 데 사용할 수 있습니다. 선언의 범위는 함수 범위입니다. const로 변수를 선언할 때 변수는 동일하게 초기화되어야 합니다. 시간이며, 초기화 후에는 값을 수정할 수 없습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.
변수 키워드 선언 var, let 및 const
ECMAScript 변수는 느슨한 형식입니다. 즉, 변수는 모든 유형의 데이터를 저장하는 데 사용할 수 있으며 각 변수는 값을 저장하는 데 사용되는 이름일 뿐입니다 자리 표시자 .
1.var 키워드
var로 선언된 변수는 any유형 값을 저장하는 데 사용할 수 있습니다(특수 값 undefine
은 초기화 없이 저장됨). JavaScript는 변수를 정의하면서 변수에 값을 할당할 수도 있습니다. 변수는 할당된 값을 저장하는 변수로 정의됩니다. JavaScript는 변수가 초기화될 때 초기화되지 않습니다. 할당되는 것은 단순한 할당일 뿐입니다. 그러면 저장된 값뿐만 아니라 값의 유형도 변경할 수 있습니다. undefined
),像其他语言一样在javascript在定义变量的同时还可以对变量进行赋值,该变量被定义为一个保存所赋值的值的变量,因为javascript是动态语言,在初始化变量的时候不会将它标识为所赋值的数据类型,只是一个简单的赋值而已。随后不仅可以改变保存的值,还可以改变值的类型:
var message = "hi"; message = 100;
1.1.var声明作用域
使用var操作符定义的变量会成为包含它的函数的局部变量。比如,使用var在函数内部定义一个变量,就意味这该变量将在函数退出时被销毁,我觉得这就是所说的垃圾回收:
function test( ) { vart message = "hi"; //局部变量 } test( ); console.log(message); //报错!
函数调用之后变量会随机被销毁,因此最后一行会报错。不过,在函数定义变量时省略var操作符时可以创建一个全局变量:
function test( ) { message = "hi"; //全局变量 } test( ); console.log(message); //"hi"
只要调用一次函数test( )就会定义message这一全局变量,并且可以在函数外部访问。但是由于在局部作用域中定义的全局变量很难维护,所以一般不推荐这样做。
1.2.var声明提升
使用var关键字声明的变量会自动提升函数作用域顶部,即所谓的“提升”(hoist),也就是把所有变量声明都拉到函数作用域的顶部:
function fool( ) { console.log(age); var age = 28; } fool( ); //undefined
这里是不会报错的,而是显示undefined,ECMAScript在运行是会把它看成等价于如下的代码:
function fool( ) { var age; console.log(age); age = 28; } fool( ); //undefined
2.let声明
let跟var的作用差不多,但有着非常重要的区别。最明显的区别是let声明的范围是块作用域,而var声明的范围是函数作用域:
if (true) { let age = 26; console.log(age); //26 } console.log(age); //ReferceError:age没有定义
age变量的作用域仅限于该块内部,所以不能在if块外部被引用。块作用域是函数作用域的子集,所以适用于var的作用域限制也同样适用于let。
let也不允许同一块作用域中出现冗余声明(var可以):
var name; var name; let age; let age; //SyntaxError;标识符age已经声明过了
此外,对声明冗余报错不会因混用var和let而受影响。这两个关键字声明的并不是不同类型的变量,他们只是指出变量在相关作用域如何存在。
2.1.暂时性死区
let与var的另一个重要区别是let声明的变量不会在作用域中被提升:
//name会提升 console.log(name); //undefined var name = 'matt'; //name不会提升 console.log(name); //ReferenceError:name没有定义 let name = 'matt';
2.2.全局声明
与var不同,使用let在全局作用域中声明的变量不会成为window对象的属性(var声明的变量则会):
var name = 'matt'; console.log(window.name); //'matt' let name = 'matt'; console.log(window.name); //undefined
不过,let声明仍然是在全局作用域中发生的,相应变量会在页面的声明周期内存续。
2.3.条件声明
let的作用域是块,所以不可能检查前面是否已经使用let声明过同名变量,同时也就不可能在没有声明的情况下声明它。使用try/catch或typeof操作符也不能解决,因为条件块中let声明的作用域仅限于该块。为此,对于let这个新的ES6声明关键字不能依赖条件声明模式。
2.4.for循环中的let声明
在使用var的时候,最常见的问题就是对迭代变量的奇特声明和修改:
for(var i = 0; i < 5; ++i) { setTimeout( () => console.log(i) ,0) } //你可能以为会输出0、1、2、3、4 //实际上输出的是5、5、5、5、5
在退出循环的时候迭代变量保存的是导致循环退出的值:5。在之后执行setTimeout
for(let i = 0; i < 5; ++i) { setTimeout( () => console.log(i) ,0) } //会输出0、1、2、3、41.1.var 선언 범위🎜🎜🎜 다음을 사용하여 정의된 변수 var 연산자는 이를 포함하는 함수의 지역 변수가 됩니다. 예를 들어, 함수 내에서 변수를 정의하기 위해 var를 사용한다는 것은 함수가 종료될 때 변수가 파괴된다는 것을 의미합니다. 이것이 바로 가비지 수집이라고 생각합니다. 🎜
const person = { }; person.name = 'matt';🎜 함수가 호출된 후 변수가 무작위로 파괴됩니다. 이므로 마지막 줄에서 오류가 보고됩니다. 하지만 함수에서 변수를 정의할 때 var 연산자를 생략하면 🎜전역 변수🎜를 생성할 수 있습니다. 🎜rrreee🎜 test() 함수가 한 번만 호출되면 전역 변수 메시지가 정의되고 외부에서 액세스할 수 있습니다. 기능. 그러나 로컬 범위에 정의된 전역 변수는 유지 관리가 어렵기 때문에 일반적으로 권장되지 않습니다. 🎜🎜🎜1.2. Var 선언 호이스팅🎜🎜🎜🎜 var 키워드를 사용하여 선언된 변수는 🎜함수 범위의 맨 위로🎜 자동으로 호이스팅됩니다. "호이스팅"(hoist)이라고 합니다. 즉, 모든 변수 선언이 함수 범위의 맨 위로 당겨집니다. 🎜rrreee🎜 이는 오류를 보고하지 않지만 ECMAScript에서는 이를 처리하도록 표시합니다. 다음 코드에서 실행 시 동일하게 사용됩니다. 🎜rrreee🎜🎜🎜2.let 선언🎜🎜🎜🎜 Let은 var와 유사한 기능을 갖고 있지만 매우 중요한 차이점이 있습니다. 가장 분명한 차이점은 let 선언의 범위는 🎜block 범위🎜인 반면 var 선언의 범위는 함수 범위입니다. 🎜rrreee🎜 age 변수의 범위는 블록 내부로 제한되므로 if 블록 외부에서는 참조할 수 없습니다. 블록 범위는 함수 범위의 하위 집합이므로 var에 적용되는 동일한 범위 제한이 let에도 적용됩니다. 🎜🎜 Let은 동일한 범위에서 중복 선언을 허용하지 않습니다(var 가능):🎜rrreee🎜 또한 중복 선언 오류는 var와 let을 혼합해도 영향을 받지 않습니다. 이 두 키워드는 서로 다른 유형의 변수를 선언하지 않으며 단지 관련 범위에 변수가 존재하는 방식을 나타냅니다. 🎜🎜🎜2.1. 임시 데드존 🎜🎜🎜🎜 let과 var의 또 다른 중요한 차이점은 let 🎜으로 선언된 변수가 범위 🎜에서 승격되지 않는다는 것입니다. 🎜🎜2.2. 전역 선언🎜🎜🎜🎜 var와 달리 전역 범위에서 let을 사용하여 선언된 변수는 창 개체의 속성이 되지 않습니다(var로 선언된 변수는 다음과 같습니다). 🎜rrreee🎜 그러나 let 선언은 여전히 전역 범위에서 발생하며 해당 변수는 페이지 선언 주기 내에서 유지됩니다. 🎜🎜🎜2.3. 조건부 선언 🎜🎜🎜🎜 let의 범위는 블록이므로 이전에 다음을 사용하여 동일한 이름의 변수가 선언되었는지 확인할 수 없습니다. 선언하지 않고 선언하는 것도 불가능합니다. 조건부 블록의 let 선언 범위가 해당 블록으로 제한되기 때문에 try/catch 또는 typeof 연산자를 사용하면 이 문제를 해결할 수 없습니다. 이러한 이유로 새로운 ES6 선언 키워드 let은 조건부 선언 패턴에 의존할 수 없습니다. 🎜🎜🎜2.4. for 루프의 let 문 🎜🎜🎜🎜 var를 사용할 때 가장 일반적인 문제는 반복 변수의 이상한 선언과 수정입니다. 🎜rrreee 🎜 종료할 때 루프에서 반복 변수는 루프를 종료시킨 값을 저장합니다: 5. 나중에
setTimeout
시간 초과 논리가 실행될 때 i는 동일한 변수가 되므로 최종 출력은 동일한 값이 됩니다. 🎜 使用let声明迭代变量时,JavaScript引擎在后台会为每个迭代循环声明一个新的迭代变量,每个setTimeout
引用的都是不同的变量实例:
for(let i = 0; i < 5; ++i) { setTimeout( () => console.log(i) ,0) } //会输出0、1、2、3、4
【相关推荐:javascript学习教程】
3.const声明
const的行为与let基本相同,唯一一个重要区别是它声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行错误。
const声明的限制只适用于它指向的变量的引用。如果const变量引用的是一个对象,那么修改这个对象内部的属性并不违反const的限制:
const person = { }; person.name = 'matt';
4.使用建议
let和const是ES6中新增的,从客观上为JavaScript更精确地声明作用域和语义提供更好的支持。
4.1.不使用var
限制自己只使用let和const有助于提升代码质量,因为变量有了明确的作用域、声明位置,以及不变的值。
4.2.const优先,let次之
使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码分析工具提前发现不合法的赋值操作。因此,我们应该优先使用const来声明变量,只有在提前知道未来会有修改时再使用let。
更多编程相关知识,请访问:编程入门!!
위 내용은 자바스크립트에서 변수를 선언하는 키워드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

React는 현대적인 프론트 엔드 애플리케이션을 구축하기위한 JavaScript 라이브러리입니다. 1. 구성 요소 및 가상 DOM을 사용하여 성능을 최적화합니다. 2. 구성 요소는 JSX를 사용하여 데이터를 관리하기 위해 정의, 상태 및 속성을 정의합니다. 3. 고리는 수명주기 관리를 단순화합니다. 4. ContextApi를 사용하여 글로벌 상태를 관리하십시오. 5. 일반적인 오류는 디버깅 상태 업데이트 및 수명주기가 필요합니다. 6. 최적화 기술에는 메모 화, 코드 분할 및 가상 스크롤이 포함됩니다.

React의 미래는 궁극적 인 구성 요소 개발, 성능 최적화 및 다른 기술 스택과의 깊은 통합에 중점을 둘 것입니다. 1) RECT는 구성 요소의 생성 및 관리를 더욱 단순화하고 궁극적 인 구성 요소 개발을 촉진합니다. 2) 성능 최적화는 특히 대규모 응용 프로그램에서 초점이됩니다. 3) React는 개발 경험을 향상시키기 위해 GraphQL 및 TypeScript와 같은 기술과 깊이 통합 될 것입니다.

React는 사용자 인터페이스를 구축하기위한 JavaScript 라이브러리입니다. 핵심 아이디어는 구성 요소화를 통해 UI를 구축하는 것입니다. 1. 구성 요소는 UI 논리 및 스타일을 캡슐화하는 반응의 기본 단위입니다. 2. 가상 DOM 및 상태 관리는 구성 요소 작업의 핵심이며 State는 SetState를 통해 업데이트됩니다. 3. 수명주기에는 마운트, 업데이트 및 제거의 세 단계가 포함됩니다. 성능을 합리적으로 사용하여 최적화 할 수 있습니다. 4. usestate 및 contextapi를 사용하여 상태를 관리하고 구성 요소 재사용 성 및 글로벌 상태 관리를 개선하십시오. 5. 일반적인 오류에는 부적절한 상태 업데이트 및 성능 문제가 포함되며, 이는 ReactDevTools를 통해 디버깅 할 수 있습니다. 6. 성능 최적화 제안에는 메모 사용, 불필요한 재 렌더링 방지 및 사용이 포함됩니다.

JSX 구문 사용 : JSX 구문을 사용하여 JSX 구조를 사용하여 HTML 구조를 JavaScript 코드에 포함시키고 컴파일 후 DOM을 작동시킵니다. 구성 요소는 HTML과 결합됩니다. React 구성 요소는 소품을 통해 데이터를 전달하고 HTML 컨텐츠를 동적으로 생성합니다. 데이터 흐름 관리 : React의 데이터 흐름은 일방 통행이며, 부모 구성 요소에서 자식 구성 요소로 전달되어 이름을 인사말로 전달하는 앱 구성 요소와 같이 데이터 흐름을 제어 할 수 있도록합니다. 기본 사용 예 :지도 함수를 사용하여 목록을 렌더링하려면 과일 목록 렌더링과 같은 주요 속성을 추가해야합니다. 고급 사용 예 : Usestate 후크를 사용하여 상태를 관리하고 역학을 구현합니다.

React는 사용자 인터페이스를 구축하는 효율적이고 유연한 방법을 제공하기 때문에 단일 페이지 응용 프로그램 (SPA)을 구축하는 데 선호되는 도구입니다. 1) 구성 요소 개발 : 복잡한 UI를 독립적이고 재사용 가능한 부품으로 분할하여 유지 가능성과 재사용 성을 향상시킵니다. 2) 가상 DOM : 가상 DOM과 실제 DOM의 차이를 비교하여 렌더링 성능을 최적화합니다. 3) 상태 관리 : 데이터 일관성 및 예측 가능성을 보장하기 위해 상태 및 속성을 통한 데이터 흐름을 관리합니다.

React는 Meta가 사용자 인터페이스를 구축하기 위해 개발 한 JavaScript 라이브러리이며 핵심은 구성 요소 개발 및 가상 DOM 기술입니다. 1. 구성 요소 및 상태 관리 : React는 구성 요소 (기능 또는 클래스) 및 후크 (예 : usestate)를 통해 상태를 관리하여 코드 재사용 및 유지 보수를 개선합니다. 2. 가상 DOM 및 성능 최적화 : 가상 DOM을 통해 실제 DOM을 효율적으로 업데이트하여 성능을 향상시킵니다. 3. 수명주기 및 후크 : 후크 (예 : 사용률) 기능 구성 요소가 수명주기를 관리하고 부작용 작업을 수행 할 수 있도록합니다. 4. 사용 예 : 기본 Helloworld 구성 요소에서 고급 글로벌 주 관리 (Usecontext 및

React Ecosystem에는 주정부 관리 라이브러리 (예 : Redux), 라우팅 라이브러리 (예 : Reactrouter), UI 구성 요소 라이브러리 (예 : 재료 -UI), 테스트 도구 (예 : Jest) 및 Webpack과 같은 빌드 도구 (예 : Webpack)가 포함됩니다. 이러한 도구는 개발자가 애플리케이션을 효율적으로 개발하고 유지하고 코드 품질 및 개발 효율성을 향상시킬 수 있도록 함께 작동합니다.

React는 사용자 인터페이스를 구축하기 위해 Facebook에서 개발 한 JavaScript 라이브러리입니다. 1. 구성 요소 및 가상 DOM 기술을 채택하여 UI 개발의 효율성과 성능을 향상시킵니다. 2. RECT의 핵심 개념에는 구성 요소화, 상태 관리 (예 : usestate 및 useeffect) 및 가상 DOM의 작동 원리가 포함됩니다. 3. 실제 응용 분야에서 React는 기본 구성 요소 렌더링에서 고급 비동기 데이터 처리에 이르기까지 지원됩니다. 4. 주요 속성 추가 또는 잘못된 상태 업데이트를 잊어 버린 것과 같은 일반적인 오류는 ReactDevTools 및 Logs를 통해 디버깅 할 수 있습니다. 5. 성능 최적화 및 모범 사례에는 React.Memo, 코드 세분화 및 코드를 읽기 쉽게 유지하고 신뢰성을 유지하는 것이 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
