ES6中嚴格模式

2021-10-01 03:55:43 字數 910 閱讀 7653

從es5開始,函式內部就可以設定為嚴格模式。

function

(x,y)

es6將其做了一些規定,只要函式引數使用了預設值,解構賦值,擴充套件運算子,那麼函式內部就不能顯式設定嚴格模式了,否則會報錯。

function

dosomething

(a, b = a)

const

dosomething

=function()

;const

dosomething=(

...a)

=>

;const obj =)}

;//上面幾種寫法都會報錯:uncaught syntaxerror: illegal 'use strict' directive in function with non-****** parameter list

es6這樣規定的原因是,函式內部的嚴格模式,同時適用於函式體和函式引數。但是,函式執行的時候,先執行函式引數,然後再執行函式體。這樣就有乙個不合理的地方,只有從函式體之中,才能知道引數是否應該以嚴格模式執行,但是引數卻應該先於函式體執行。

解決辦法:

設定全域性性的嚴格模式

把函式包在乙個無引數的立即執行函式裡面

// 第一種設定全域性性的嚴格模式

'use strict'

;function

dosomething

(a, b = a)

// 第二種把函式包在乙個無引數的立即執行函式裡面

const dosomething =

(function()

;}()

);

ES6 嚴格模式

es6 的模組自動採用嚴格模式,不管你有沒有在模組頭部加上 use strict 嚴格模式主要有以下限制。1.塊級函式 use strict if true 語法錯誤 es5中嚴格模式下禁止宣告塊級函式,而在es6的嚴格模式中可以宣告塊級函式,並可以在塊級作用 use strict var b tr...

ES6系列 ES6簡介

2015年6月17日,ecmascript的第六個版本正式發布,該版本正式名稱為ecmascript 2015,但通常被稱為ecmascript 6或者es6。瀏覽器對es6的支援情況 es6主要應用於node.js,如果想用在瀏覽器中,就需要使用轉碼器 將es6 轉成es5 這意味著,可以用es6...

ES6系列 詳解ES6中的Map

map類似於物件,都用於儲存key value結構的資料。但是,在傳統的物件上,只能用字串或者symbol來作為鍵名。然而,map與物件最大的差別就在於它可以各種資料型別作為鍵名。map是乙個建構函式,用於例項化例項。const m newmap const o m.set o,content m....