es6新特性來襲

2021-08-20 21:44:41 字數 2207 閱讀 2016

在es6之前,我們都是用var關鍵字宣告變數。無論宣告在何處,都會被視為宣告在函式的最頂部(不在函式內即在全域性作用域的最頂部)。這就是函式變數提公升例如:

function

aa() else

}

以上的**實際上是:

function

aa() else

//此處訪問test 值為undefined

}

所以不用關心bool是否為trueorfalse。實際上,無論如何test都會被建立宣告。

接下來es6主角登場:

我們通常用letconst來宣告,let表示變數const表示常量letconst都是塊級作用域。怎麼理解這個塊級作用域?

說白了{}大括號內的**塊即為letconst的作用域。

看以下**:

function

aa() else

}

let的作用域是在它所在當前**塊,但不會被提公升到當前函式的最頂部。

再來說說const

const宣告的變數都會被認為是常量,意思就是它的值被設定完成後就不能再修改了。

const name = 'lux'

name = 'joe'

//再次賦值此時會報錯

還有,如果const的是乙個物件,物件所包含的值是可以被修改的。抽象一點兒說,就是物件所指向的位址沒有變就行。

const student = 

// 沒毛病

student.name = 'yy'

// 如果這樣子就會報錯了

student =

說一道面試題

var funcs = 

for (var i = 0; i < 10; i++) )

}funcs.foreach(function(func) )

這樣的面試題是大家常見,很多同學一看就知道輸出 10 十次

但是如果我們想依次輸出0到9呢?

有兩種解決方法。直接看一下**。

// es5告訴我們可以利用閉包解決這個問題

var funcs =

for (var i = 0; i < 10; i++)

})(i))}

funcs.foreach(function(func) )

// 再來看看es6怎麼處理的

const funcs =

for (let i = 0; i < 10; i++) )

}funcs.foreach(func => func())

達到相同的效果,es6簡潔的解決方案是不是更讓你心動!!!

es6模板字元簡直是開發者的福音啊,解決了es5在字串功能上的痛點。

第乙個用途,基本的字串格式化。將表示式嵌入字串中進行拼接。用${}來界定。

//es5 

var name = 'lux'

console.log('hello' + name)

//es6

const name = 'lux'

console.log(`hello $`) //hello lux

第二個用途,在es5時我們通過反斜槓(\)來做多行字串或者字串一行行拼接。es6反引號(``)直接搞定。

// es5

var msg = "hi \

man!

"// es6

const template = `hello world

`

對於字串es6當然也提供了很多厲害也很有意思的方法

es6新特性 ES6新特性(一)

var 1 var宣告的是函式作用域 區域性 但在if for等定義的變數是全域性的 2 var 具有變數提公升,預解析 3 在同乙個作用域下,var可以宣告多次 4 var 宣告的變數會掛載到window上 let1 let不存在變數提公升,在變數使用之前,必須要先宣告 2 let在同一作用域下,...

ES6新特性須知

1.1es5之前函式想要賦預設值var funes5 function a,b,c 1.2es6開始函式想要賦預設值var funes6 function a 50,b 60,c 70 2.1es5之前字串拼接或者拼接屬性值只能如下var a lbj var b 50 var c name a ye...

es6新特性分享

1 字串查詢 es5使用是indexof 返回字元第一次出現的位置int值 es6新增了3個方法 includes startswith endwith 返回bool值 includes 是否包含字元 startswith 首字母是否包含字元 endwith 末尾是否包含字元 2 數值擴充套件 nu...