最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你了解一下JavaScript中什么是嚴(yán)格模式

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

前言

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

什么是嚴(yán)格模式

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

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

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

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

在控制臺(tái)打印過程中報(bào)錯(cuò)

它可以全局使用,也可以在局部中使用。如下面例子中在函數(shù)內(nèi)部使用嚴(yán)格模式:

  x = 10
  console.log(x)

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

未在嚴(yán)格模式下的 x 成功打印出來,而在嚴(yán)格模式下 fun 函數(shù)里的 y 就會(huì)報(bào)錯(cuò)提示 y 沒有定義

作用

變量聲明

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

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

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

禁止刪除變量

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

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

并且嚴(yán)格模式下,對(duì)刪除不可刪除屬性、對(duì)象只讀屬性進(jìn)行賦值、getter方法讀取的屬性進(jìn)行賦值等都會(huì)報(bào)錯(cuò)

函數(shù)參數(shù)

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

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

函數(shù) this

在正常模式下,在全局調(diào)用情況中函數(shù)內(nèi)部的值為全局對(duì)象。在嚴(yán)格模式下,函數(shù)內(nèi)部的 this 值為 undefined

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

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

禁用 with

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

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

禁用 eval

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

eval("var x = 10");

arguments

arguments 傳遞進(jìn)函數(shù)的參數(shù)列表,它是一個(gè)類數(shù)組對(duì)象,它的屬性名是按照傳入?yún)?shù)的順序列來的,既然是類數(shù)組對(duì)象,就是它還有個(gè) length 屬性。在嚴(yán)格模式下,對(duì) arguments 有著一些限制。

嚴(yán)格模式下,arguments 不再追蹤參數(shù)的變化

"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 該屬性,該屬性是一個(gè)指針,指向擁有這個(gè) arguments 對(duì)象的函數(shù)。

而在嚴(yán)格模式下無法調(diào)用 callee

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

callee 屬性中報(bào)錯(cuò),表示不能在嚴(yán)格模式函數(shù)或?qū)ζ溥M(jìn)行調(diào)用的arguments對(duì)象上訪問“caller”、“callee”和“arguments”屬性

總結(jié)

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

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

相關(guān)文章

最新評(píng)論

宣恩县| 遂平县| 甘南县| 清水河县| 山东省| 杭锦旗| 江油市| 介休市| 鱼台县| 隆德县| 社旗县| 西城区| 英超| 苍山县| 巫溪县| 东阿县| 神农架林区| 田东县| 祁东县| 新泰市| 洪江市| 峡江县| 甘泉县| 孝感市| 高安市| 织金县| 滕州市| 富蕴县| 青田县| 西城区| 敦煌市| 汝城县| 泰州市| 阳春市| 田阳县| 类乌齐县| 洛宁县| 元谋县| 鲜城| 安西县| 无棣县|