《怪物獵人崛起》銃槍全彈突進流配裝思路
阿新 • • 發佈:2022-04-29
一、什麼是嚴格模式?
在嚴格的條件下允許 JS 程式碼。
消除了 JavaScript 語法的一些不合理、不嚴謹之處,減少了一些怪異行為。
提高編譯器效率,增加執行速度。
禁用了在 ECMAScript 的未來版本中可能會定義的一些語法,為未來新版本的 JavaScript 做好鋪墊。比如一些保留字,如:class、enum、export、extends、import、super不能做變數名。
二、開啟嚴格模式
嚴格模式可以應用到整個指令碼或個別函式中。因此在使用時,我們可以將嚴格模式分 為指令碼開啟嚴格模式 和 為函式開啟嚴格模式 兩種情況。
為指令碼開啟嚴格模式,需要在所有語句之前放一個特定語句 "use strict"; 或者 'use strict';
'use strict';
2、為函式開啟嚴格模式
// 此時只是給fn函式開啟嚴格模式 function fn(){ 'use strict' // 下面的程式碼按照嚴格模式執行 } function fun(){ // 裡面還是按照普通模式執行 }
三、嚴格模式中的變化
- 在正常模式下,如果一個變數沒有宣告就賦值,預設是全域性變數。嚴格模式下禁止這種寫法,變數必須先宣告,再使用。
'use strict' num = 1
2、不能隨意刪除已經宣告好的變數
3、在嚴格模式下全域性作用域中函式的 this 是 undefined。
'use strict' function fn(){ console.log(this) } fn() //undefined
4、以前建構函式不加 new 也可以呼叫,當普通函式,this 指向全域性物件。
function Star(){ this.sex = '男' } Star() console.log(window.sex) //男
5、嚴格模式下,如果建構函式不加 new 呼叫,this 指向的是 undefined,如果給它賦值,會報錯。
'use strict' function Star(){ this.sex = '男' } Star() console.log(window.sex)
6. new 例項化的建構函式指向建立的物件例項
'use strict' function Star(){ this.sex = '男' } let a = new Star() console.log(a.sex) //sex
7、定時器 this 還是指向 window
'use strict' setTimeout(function(){ console.log(this) }, 100)
四、嚴格模式中函式的變化
- 函式不能有重名的引數。
//非嚴格模式下 後面的值覆蓋了前面的,但能執行 function fn(a, a){ console.log(a + a) } fn(1, 2) //4
//嚴格模式下 函式不能有重名的引數 'use strict' function fn(a, a){ console.log(a + a) } fn(1, 2)
2、 函式必須宣告在頂層。因為塊級作用域,不允許在非函式的程式碼塊內宣告函式。(不允許在
if判斷
和for迴圈
中宣告函式)
搜尋
複製