1. 程式人生 > 遊戲攻略 >《怪物獵人崛起》銃槍全彈突進流配裝思路

《怪物獵人崛起》銃槍全彈突進流配裝思路

一、什麼是嚴格模式?
在嚴格的條件下允許 JS 程式碼。
消除了 JavaScript 語法的一些不合理、不嚴謹之處,減少了一些怪異行為。
提高編譯器效率,增加執行速度。
禁用了在 ECMAScript 的未來版本中可能會定義的一些語法,為未來新版本的 JavaScript 做好鋪墊。比如一些保留字,如:class、enum、export、extends、import、super不能做變數名。
二、開啟嚴格模式
嚴格模式可以應用到整個指令碼或個別函式中。因此在使用時,我們可以將嚴格模式分 為指令碼開啟嚴格模式 和 為函式開啟嚴格模式 兩種情況。

為指令碼開啟嚴格模式,需要在所有語句之前放一個特定語句 "use strict"; 或者 'use strict';

'use strict';

 2、為函式開啟嚴格模式

// 此時只是給fn函式開啟嚴格模式
    function fn(){
        'use strict'
        // 下面的程式碼按照嚴格模式執行
    }
    function fun(){
        // 裡面還是按照普通模式執行
    }

  

三、嚴格模式中的變化

  1. 在正常模式下,如果一個變數沒有宣告就賦值,預設是全域性變數。嚴格模式下禁止這種寫法,變數必須先宣告,再使用。
'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)

  

  1. 事件、物件還是指向呼叫者。

四、嚴格模式中函式的變化

  1. 函式不能有重名的引數。
    //非嚴格模式下 後面的值覆蓋了前面的,但能執行
    	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迴圈 中宣告函式)

搜尋

複製