亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文帶你了解一下JavaScript中什么是嚴格模式

 更新時間:2023年11月18日 09:55:23   作者:Minfai  
嚴格模式是?ECMAScript?5?引入的一種運行模式,可以讓?JavaScript?在更加嚴格的條件下運行,本文主要為大家詳細介紹了JavaScript中嚴格模式的使用,需要的可以參考下

前言

JavaScript 是一門動態(tài)弱類型的編程語言,同其他語言一樣,有它自身的語法,數據類型,表達式。但是它有著一些缺陷,由于采用的是弱類型,對使用的數據類型未作出嚴格的要求,最初開發(fā)時并未考慮周全及設計階段過于倉促,相對于 Java,其設計簡單緊湊,并未考慮到復雜應用的需要。所以為了解決這個問題,出現了嚴格模式。

什么是嚴格模式

嚴格模式是 ECMAScript 5 引入的一種運行模式,可以讓 JavaScript 在更加嚴格的條件下運行。該模式為 Js 定義了一種不同的解析與執(zhí)行。

ECMAScript 是由 Ecma 國際在標準 ECMA-262 中定義的腳本語言規(guī)范,也可以理解為 JavaScript 的一個標準

它通過添加一個特定的編譯指示符(即 "use strict")來啟用。嚴格模式可以讓代碼中一些不安全的行為被禁用,從而使 JavaScript 引擎在執(zhí)行代碼時更加嚴格,更嚴格的條件去檢查開發(fā)者的代碼錯誤,減少出現潛在問題的可能性,能讓我們的代碼更合理、更安全、更嚴謹。

<script>
  // 開啟嚴格模式
  "use strict";
  x = 10
  console.log(x)
</script>

在控制臺打印過程中報錯

它可以全局使用,也可以在局部中使用。如下面例子中在函數內部使用嚴格模式:

  x = 10
  console.log(x)

  function fun() {
    "use strict";
    y = 20
    console.log(y)
  }
  fun()

未在嚴格模式下的 x 成功打印出來,而在嚴格模式下 fun 函數里的 y 就會報錯提示 y 沒有定義

作用

變量聲明

在正常模式中,一個變量沒有聲明賦值,該變量就提升為全局變量。而在嚴格模式中,變量一定要聲明。

"use strict";
let name = '小明'
console.log(x)

// error
name = '小明'
console.log(x) // name is not defined

禁止刪除變量

在正常模式中,可以使用 delete 來刪除變量。而在嚴格模式下,只能刪除對象屬性。

"use strict";
let a = 1
delete a // 'delete' cannot be called on an identifier in strict mode.

并且嚴格模式下,對刪除不可刪除屬性、對象只讀屬性進行賦值、getter方法讀取的屬性進行賦值等都會報錯

函數參數

在嚴格模式下參數名不能重復,Duplicate parameter name not allowed in this context 意思是 此上下文中不允許有重復的參數名稱

  "use strict";
  function fun(name, name, name) { // Duplicate parameter name not allowed in this context
    console.log(111)
  }

函數 this

在正常模式下,在全局調用情況中函數內部的值為全局對象。在嚴格模式下,函數內部的 this 值為 undefined

"use strict";
function fun() {
  console.log(this); // 輸出 undefined
}
fun();

// 正常模式
function fun() {
  console.log(this); // 輸出 window 對象
}
fun();

禁用 with

with 可以按序檢索的對象列表,通過它可以進行變量名的解析。with 語句用于臨時拓展作用域鏈。

"use strict";
var obj = { name: '小明' };
with (obj) {
  console.log(name); // 'with' statements are not allowed in strict mode.
}

禁用 eval

eval() 函數會計算 JavaScript 字符串,并把它作為腳本代碼來執(zhí)行。

eval("var x = 10");

arguments

arguments 傳遞進函數的參數列表,它是一個類數組對象,它的屬性名是按照傳入參數的順序列來的,既然是類數組對象,就是它還有個 length 屬性。在嚴格模式下,對 arguments 有著一些限制。

嚴格模式下,arguments 不再追蹤參數的變化

"use strict";
function fun(name) {
  name = '張三'
  return [name, arguments[0]]
}
console.log(fun('小明')) // [ 張三 小明 ]

// 正常模式
function fun(name) {
  name = '張三'
  return [name, arguments[0]]
}
console.log(fun('小明')) // [ 張三 張三 ]

在正常模式下,打印 arguments

function fun(name) {
    return arguments
}
console.log(fun('小明'))

如圖顯示 arguments 有著 callee 該屬性,該屬性是一個指針,指向擁有這個 arguments 對象的函數。

而在嚴格模式下無法調用 callee

"use strict";
function fun(name) {
    return arguments
}
console.log(fun('小明'))

callee 屬性中報錯,表示不能在嚴格模式函數或對其進行調用的arguments對象上訪問“caller”、“callee”和“arguments”屬性

總結

嚴格模式讓我們的代碼更加規(guī)范,它可以幫助開發(fā)者避免一些常見的錯誤和降低代碼的不確定性,提高編譯器效率,增加運行速度。它給我們代碼增加了一些限制和檢查,會對項目的代碼帶來一些影響,所以我們要根據項目決定是否來使用嚴格模式。

到此這篇關于一文帶你了解一下JavaScript中什么是嚴格模式的文章就介紹到這了,更多相關JavaScript嚴格模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • bootstrap table 多選框分頁保留示例代碼

    bootstrap table 多選框分頁保留示例代碼

    在使用bootstrap table的復選框功能的時候,由于采用服務端分頁,當在第一頁選擇了某些數據,然后點擊第二頁選擇一些數據,再次點回第一頁,發(fā)現原先選擇的數據已經清空了,原來的多選框并不支持翻頁保留多選數據,怎么解決呢,下面小編給大家分享下解決思路
    2017-03-03
  • JS實現DOM刪除節(jié)點操作示例

    JS實現DOM刪除節(jié)點操作示例

    這篇文章主要介紹了JS實現DOM刪除節(jié)點操作,結合實例形式分析了javascript使用removeChild()操作頁面dom節(jié)點刪除功能的相關實現技巧,需要的朋友可以參考下
    2018-04-04
  • 簡單談談javascript代碼復用模式

    簡單談談javascript代碼復用模式

    這篇文章主要簡單談談javascript代碼復用模式,主要詳細介紹了類式繼承模式中的默認模式,希望大家能夠喜歡。
    2015-01-01
  • uniapp通過概率實現隨機抽獎的項目實踐

    uniapp通過概率實現隨機抽獎的項目實踐

    在很多電商平臺或者活動中,都會有類似抽獎贏優(yōu)惠券的功能,本文主要介紹了uniapp通過概率實現隨機抽獎的項目實踐,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • JS實現點擊顏色塊切換指定區(qū)域背景顏色的方法

    JS實現點擊顏色塊切換指定區(qū)域背景顏色的方法

    這篇文章主要介紹了JS實現點擊顏色塊切換指定區(qū)域背景顏色的方法,涉及javascript操作cookie及背景色的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • JavsScript中Promise的錯誤捕獲詳解

    JavsScript中Promise的錯誤捕獲詳解

    怎么捕獲錯誤并且處理是一門語言必備的知識,在JavaScript中也是如此,下面這篇文章主要給大家介紹了關于JavsScript中Promise錯誤捕獲的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • JavaScript動畫函數封裝詳解

    JavaScript動畫函數封裝詳解

    動畫的原理是通過定時器setInterval() 不斷移動盒子位置。但是如果同時有好幾個元素都需要添加動畫呢?我們就可以考慮將其封裝成一個簡單的動畫函數。本文將為大家介紹如何進行封裝,需要的可以參考一下
    2021-12-12
  • JS隨機密碼生成算法

    JS隨機密碼生成算法

    這篇文章主要為大家詳細介紹了JS隨機密碼生成算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 老生常談JS中的繼承及實現代碼

    老生常談JS中的繼承及實現代碼

    這篇文章主要介紹了js中的繼承及實現代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • 原生JavaScript實現合并多個數組示例

    原生JavaScript實現合并多個數組示例

    這篇文章主要介紹了原生的JavaScript及jquery實現合并多個數組,很簡單,很實用,大家可以看看
    2014-09-09

最新評論