【JavaScript】嚴格模式

嚴格模式(Strict Mode)是一種運行模式,它提供了一種更加嚴格的語法和錯誤檢查,以幫助開發者編寫更可靠、更規范的代碼。

  1. 什么是嚴格模式:
    嚴格模式是一種 JavaScript 的執行模式,通過啟用嚴格模式,可以對一些不規范或潛在的問題進行檢測,并禁用一些不安全的語言特性,以提高代碼質量和可維護性。

  2. 開啟嚴格模式:
    在腳本文件或函數的開頭添加"use strict";字符串,即可開啟嚴格模式。例如:

    "use strict";
    // 嚴格模式下的代碼
    
  3. 嚴格模式和普通模式的區別:

    • 變量必須聲明:在嚴格模式下,變量必須使用varletconst進行聲明,否則會拋出錯誤。而在普通模式下,未聲明的變量會被隱式創建為全局變量。
    • 刪除變量和不可寫(不允許刪除的 / 不存在的)屬性:在嚴格模式下,無法刪除不可寫的變量(使用delete操作符),會拋出錯誤。而在普通模式下,刪除不可寫屬性的操作會靜默失敗(不會給出任何提示)。
    • 禁止重復的函數參數名:在嚴格模式下,函數聲明中禁止使用重復的參數名,否則會拋出錯誤。而在普通模式下,重復的參數名會被忽略。
    • 對象不能有重名屬性(ES6 已不存在此問題)。
    • 禁止使用八進制字面量:在嚴格模式下,八進制字面量(以0開頭的數字)將被視為語法錯誤。而在普通模式下,八進制字面量會被解析為對應的十進制數。
    • 函數內部this值為undefined:在嚴格模式下,函數內部的this值為undefined,而不是默認指向全局對象(如瀏覽器中的window)。
    • 創設 eval 作用域。嚴格模式下創設了 eval 作用域。正常模式下, eval 語句的作用域取決于它處再哪個作用域。嚴格模式下,eval 本身就是一個作用域,不能再生成全局作用域了,所生成的變量只能用于 eval 內部。
    "use strict";var x = 2
    // eval函數用于將給定的字符串作為JavaScript代碼執行
    console.info(eval('var x = 5; x'))
    console.info(x)  // 嚴格模式下,eval中的變量不會影響外部變量,所以為2;否則為5
    
    • 保留字。嚴格模式新增的一些保留字:interface、let、package、private、static等,用于變量名將會報錯。

使用嚴格模式的優點:

  • 消除JavaScript語法的一些不合理、不嚴謹之處,減少一些怪異行為
  • 消除代碼運行的一些不安全之處,保證代碼運行的安全
  • 提高編譯器效率,增加運行速度
  • 為未來新版本的Javascript做好鋪墊

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12827.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12827.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12827.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

這個notebook集合,贊

這幾天在Github上看到一個數據科學倉庫,匯總了很多Python notebook代碼,主要是數據方向。 項目地址: https://github.com/donnemartin/data-science-ipython-notebooks 其中包括了pandas、numpy、matplotlib、scikit-learn、tensorflow、sp…

【Xilinx】程序可以綜合實現,但無法生成bit文件

項目場景: 使用xilinx vivado過程中遇到以下問題: 程序可以綜合實現,但無法生成bit文件 問題描述 最終生成bit文件時報錯如下 [DRC PDCN-1567] BUFGCTRL_CE_pins_both_connected_to_gnd: For cell ***/rxrecclk_bufg_i placed at site BU…

c++ visualstudio2017 opencv debug源碼 windows配置

源碼下載和cmake opencv源碼和opencv-contribue文件夾的層級目錄 在opencv-4.4.0中新建build文件夾,并啟動cmake-gui 配置如下,使用vs2017 x64, 需要注意contrib文件夾的設置,如下方藍色所示,依次點擊Configure和Generate 在bu…

半小時搞懂STM32知識點——UART

1.UART 1.1為什么要使用UART這種協議?介紹一下UART及其特點 成本低,硬件簡單,數據格式靈活; 低速全雙工異步串行通信 1.2 UART數據幀格式? 起始位(1)+數據位(5-8) 校驗位…

docker-java 操作docker

部署docker 10分鐘學會Docker的安裝和使用_docker安裝-CSDN博客文章瀏覽閱讀2.5w次,點贊44次,收藏279次。文章目錄Docker簡介Docker安裝Windows安裝Linux安裝CentOS安裝Ubuntu安裝最近花了些時間學習docker技術相關,在此做一些總結&#xff0…

12350 安全生產舉報投訴特服熱線系統解決方案

一、建設背景與系統概述 (一)背景介紹 隨著經濟的持續發展和社會的不斷進步,安全生產問題日益凸顯,成為影響社會穩定和人民福祉的重要因素。在此背景下,加強安全生產監管,提高監管效率和質量顯得尤為重要…

libasound+libsndfile讀取麥克風音頻保存為wav文件

依賴庫 要完成該功能依賴libasound、libsndfile庫,該命令在linux下可以通過命令行安裝安裝,安裝命令如下: sudo apt-get install libasound2-dev sudo apt-get install libsndfile1-dev 代碼實現 本文的目的是在linux下利用libasound和li…

wsl2遷移到非c盤

WSL2遷移 系統win11 核心步驟: 0) 以管理員身份運行powershell 查看已經安裝的Ubuntu分發版本,我的是默認 wsl -lPS C:\Users\Windows10> wsl -l 適用于 Linux 的 Windows 子系統分發版: Ubuntu (默認) 1)導出到D盤 wsl --export Ubuntu d://ubuntu.tar PS C:\U…

你還在手動加好友?試試這款神器,釋放雙手自動添加!

你還在手動添加微信好友嗎?尤其是在忙碌的時候,手動加好友不僅費時又很容易出錯。試試這個自動添加好友神器——個微管理系統,釋放你的雙手,輕松拓展好友列表! 1、多號同時登錄在線 系統支持多個微信號同時登錄在線&…

數據結構——二叉樹知識點詳解!

引言:本篇博客將詳細介紹到數據結構中的又一位大將——二叉樹。它也是我們目前學到的第一個非線性的數據結構。并且本章將學到的概念居多,希望大家可以理解并牢記。 更多有關C語言和數據結構知識詳解可前往個人主頁:計信貓 目錄 一&#xff0…

AIGC行業現在適合進入嗎

AIGC行業目前正處于快速發展階段,市場需求正處于爆發期,上大學網(www.sdaxue.com)認為,對于有興趣的個人或企業而言,現在可能是一個適合進入的時機,以下是具體的分析,供大家參考! 一、AIGC行業前…

網絡安全基礎知識

目錄 1、什么是防火墻?什么是堡壘主機?什么是DMZ? 2、網絡安全的本質是什么? 3、計算機網絡安全所面臨的威脅分為哪幾類?從人的角度,威脅網絡安全的因素有哪些? 4、網絡攻擊和防御分別包括那…

zip file is empty

從下找到報錯的jar包。展開這個jar包,看下是否正常,正常的是能夠展開看到一些文件夾以及里面的類,如下:如果不正常,就刪除這個jar包,同時找到這個jar包在本地maven倉庫的地址,也刪除掉&#xff…

string類實現

目錄 string類實現 1.構造函數(三種) 2.c_str()函數 3.operator[] 重載 4.size()函數實現 5.迭代器 6.reserve()函數實現 7.push_back()函數實現 8.append()函數實現 9.operator實現 10.insert() 實現 11.erase()函數實現 12.find()函數實現…

Chrome 瀏覽器的常用命令包括

Chrome 瀏覽器的常用命令包括: 1. **新建標簽頁**:Ctrl T (在 Windows/Linux 下),Command T (在 macOS 下)。 2. **關閉當前標簽頁**:Ctrl W (在 Windows/Linux 下&…

Java面試八股之Collection和Collections的區別

Java中Collection和Collections的區別 Collection 是一個接口,位于 java.util 包中,它是 Java 集合框架的頂層接口之一,代表了一組對象的集合。Collection 接口定義了所有集合類型(如 List、Set、Queue 等)所共有的基…

LeetCode2352相等行列對

題目描述 給你一個下標從 0 開始、大小為 n x n 的整數矩陣 grid ,返回滿足 Ri 行和 Cj 列相等的行列對 (Ri, Cj) 的數目。如果行和列以相同的順序包含相同的元素(即相等的數組),則認為二者是相等的。 解析 針對題目給出的數量級…

cubemx配置stm32f407VET6實現can通信

背景: 項目上需要把原先的TMC5160電機驅動器替換為購買的電機控制模塊(該模塊采用canopen通信) 移植canopen的前提是can通信正常,現在添加一下can通信(先用標準幀,250K bit/S的波特率測試) 原理…

個人學習計劃

vue前端(一周) 05/14 - 05/19 Html、css復習、vue基礎復習、axios復習 05/14 ElementUI學習 05/15 JWT集成驗證碼、token 05/16 vue-route多角色登錄 05/17 增刪查改、文件下載 05/18 Echart餅狀圖 05/19 📌 附加學習: 父子傳值三…

其它高階數據結構②_圖(概念+存儲+遍歷+最小生成樹)

目錄 1. 圖的概念 2. 圖的存儲結構 2.1 鄰接矩陣(后面算法所用) 2.2 鄰接表 3. 圖的遍歷 3.1 BFS廣度優先遍歷 3.2 DFS深度優先遍歷 4. 最小生成樹 4.1 Kruskal算法 4.2 Prim算法 本篇完。 1. 圖的概念 圖是由頂點集合及頂點間的關系組成的一…