當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
关于JavaScript的变量和函数提升
生活随笔
收集整理的這篇文章主要介紹了
关于JavaScript的变量和函数提升
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一種理解方式:let和const不能被使用,直到他們被聲明
對于var定義的變量,解析器會提升其到作用域頂部。
// Outputs: undefined console.log(x);var x = "Now it's defined!";// Outputs: "Now it's defined!" console.log(x);對于let定義的變量,在聲明之前使用這些變量,就會報錯。
"use strict";// ReferenceError console.log(x);let x = "Now it's defined!"; console.log(x);另外ES6明確規定,如果區塊中存在let和const命令,這個區塊對這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會報錯。
"use strict";let x = 10;if (true) {"use strict";// ReferenceErrorconsole.log(x);let x = 20;console.log(x); }對于函數聲明,解析器會提升并定義到作用域頂部。
// Outputs: "Definition hoisted!" f();function f() {console.log("Definition hoisted!"); }第二種理解方式
所有的定義方式“var, let, const, function, function, class”都存在變量提升,但是var定義的變量被提升初始化為undefined, function/function的變量被提升并被定義相應函數;而let, const, class定義的變量被提升,但沒有被初始化,且只能在聲明的時候被初始化,不然提前的引用都會報ReferenceError錯誤。
參考
- ECMAScript 6 入門
- JavaScript 中的變量和函數提升
- Are variables declared with let or const not hoisted in ES6?
轉載于:https://www.cnblogs.com/yangqionggo/p/5200530.html
總結
以上是生活随笔為你收集整理的关于JavaScript的变量和函数提升的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多线程环境下调用 HttpWebRequ
- 下一篇: ios AFNetworking 有用篇