JavaScript 51 JavaScript 严格模式

news/2024/3/29 20:09:30/文章来源:https://blog.csdn.net/weixin_44226181/article/details/127626928

JavaScript

文章目录

      • JavaScript
      • 51 JavaScript 严格模式
        • 51.1 "use strict" 指令
        • 51.2 声明严格模式
        • 51.3 "use strict"; 语法
        • 51.4 为什么使用严格模式?
        • 51.5 严格模式中不允许的事项
        • 51.6 对未来的保障
        • 51.7 警告

51 JavaScript 严格模式

“use strict”; 定义 JavaScript 代码应该以“严格模式”执行。

51.1 “use strict” 指令

"use strict" 是 JavaScript 1.8.5 中的新指令(ECMAScript version 5)。

它不算一条语句,而是一段文字表达式,更早版本的 JavaScript 会忽略它。

"use strict"; 的作用是指示 JavaScript 代码应该以“严格模式”执行。

在严格模式中,无法,例如,使用未声明的变量。

以下版本的浏览器支持严格模式:

  • 版本 10 以后的 IE
  • 版本 4 以后的 Firefox
  • 版本 13 以后的 Chrome
  • 版本 5.1 以后的 Safari
  • 版本 12 以后的 Opera

51.2 声明严格模式

通过在脚本或函数的开头添加 "use strict"; 来声明严格模式。

在脚本开头进行声明,拥有全局作用域(脚本中的所有代码均以严格模式来执行):

"use strict";
x = 3.14;       // 这会引发错误,因为 x 尚未声明

在这里插入图片描述

"use strict";
myFunction();function myFunction() {y = 3.14;   // 这会引发错误,因为 y 尚未声明
}

在这里插入图片描述

够严格

在函数中声明严格模式,拥有局部作用域(只有函数中的代码以严格模式执行):

x = 3.14;       // 这不会引发错误
myFunction();function  myFunction() {"use strict";y = 3.14;   // 这会引发错误
}

在这里插入图片描述

51.3 “use strict”; 语法

声明严格模式的语法被设计为兼容更早版本的 JavaScript。

编译 JavaScript 程序中的数值文字(比如 4+5)或字符串文字(“Bill Gates”)不会有负面效果。它只会编译为不存在的变量然后消失。

所有 "use strict"; 只会对“理解”其含义的新编译器产生影响。

51.4 为什么使用严格模式?

严格模式使得开发者更容易编写“安全的” JavaScript。

严格模式把之前可接受的“坏语法”转变为真实的错误。

举例来说,在普通的 JavaScript 中,错打变量名会创建新的全局变量。在严格模式中,此举将抛出错误,这样就不可能意外创建全局变量。

在普通 JavaScript 中,如果向不可写属性赋值,开发者不会得到任何错误反馈。

在严格模式中,向不可写的、只能读取的、不存在的属性赋值,或者向不存在的变量或对象赋值,将抛出错误。

51.5 严格模式中不允许的事项

① 在不声明变量的情况下使用变量,是不允许的:

"use strict";
x = 3.14;                // 这将引发错误

对象也是变量

② 在不声明对象的情况下使用对象也是不允许的:

"use strict";
x = {p1:10, p2:20};      // 这将引发错误

③ 删除变量(或对象)是不允许的:

"use strict";
var x = 3.14;
delete x;                // 这将引发错误

④ 删除函数是不允许的:

"use strict";
function x(p1, p2) {}; 
delete x;                 // 这将引发错误

⑤ 重复参数名是不允许的:

"use strict";
function x(p1, p1) {};   // 这将引发错误

我寻思这之前都是可以的吗?离谱

⑥ 八进制数值文本是不允许的:

"use strict";
var x = 010;             // 这将引发错误

⑦ 转义字符是不允许的:

"use strict";
var x = \010;            // 这将引发错误

⑧ 写入只读属性是不允许的:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});obj.x = 3.14;            // 这将引发错误

⑨ 写入只能获取的属性是不允许的:

"use strict";
var obj = {get x() {return 0} };obj.x = 3.14;            // 这将引发错误

⑩ 删除不可删除的属性是不允许的:

"use strict";
delete Object.prototype; // 这将引发错误

⑪ 字符串 “eval” 不可用作变量:

"use strict";
var eval = 3.14;         // 这将引发错误

⑫ 字符串 “arguments” 不可用作变量:

"use strict";
var arguments = 3.14;    // 这将引发错误

with 语句是不允许的:

"use strict";
with (Math){x = cos(2)}; // 这将引发错误

⑭ 处于安全考虑,不允许 eval() 在其被调用的作用域中创建变量:

"use strict";
eval ("var x = 2");
alert (x);               // 这将引发错误

⑮ 在类似 f() 的函数调用中,this 的值是全局对象。在严格模式中,现在它成为了 undefined

51.6 对未来的保障

严格模式中不允许使用为未来预留的关键词。它们是:

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield
"use strict";
var public = 1500;      // 这将引发错误

51.7 警告

"use strict" 指令只能在脚本或函数的开头被识别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_410420.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA下载与安装,保姆级教程

这里写自定义目录标题1.搜索idea2.选择官方网站3.官网进入下载页面4.版本选择问题5. Ultimate和Community对比6.下载7.安装1.搜索idea 2.选择官方网站 以前idea的官网后面有官网俩字,现在没有了,你可以看他的具体网址,因为idea是Jetbrains公…

猿创征文|计算机学生必须掌握的学习工具

🍓个人主页:bit.. 🍒系列专栏:Linux(Ubuntu)入门必看 C语言刷题 数据结构与算法 目录 一.c/c使用的软件 二.GitHub和gitee的使用 三.学会如何去调试代码 修改bug 四.学习Linux上面的基本操作 五.java使用的软件 六.p…

【案例源码公开】国产AD+全志T3开发案例,为能源电力行业排忧解难!8/16通道

前 言 本文主要介绍基于全志科技T3(ARM Cortex-A7)国产处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616国产AD芯片,亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。 备注: (1)创龙科技TL7606I模块使用AD芯片为核芯互联CL1606或ADI AD…

Softing连接解决方案——将FANUC数控机床数据集成到西门子工业边缘

2022年10月10日(哈尔),Softing发布了edgePlug FANUC CNC,其丰富了edgePlug产品系列。该产品系列基于Linux的Docker容器应用并为西门子工业边缘应用提供了控制器数据。 (Softing的edgePlug Docker容器产品为西门子工业边…

《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX部件——Label标签

章节知识点总揽 4.2 Label标签 在Kivy中,Label小部件用于呈现文本,它仅支持ASCII和Unicode编码的字符串(不支持中文),在Label中,可以设置文本内容、字体、大小、颜色、对齐方式、换行、引用以及标记文字等…

【PCBA方案设计】快速体温计方案

一、电子体温计方案介绍 电子体温计由温度传感器,液晶显示器,纽扣电池,专用集成电路及其他电子元器件组成。能快速准确地测量人体体温,与传统的水银玻璃体温计相比,具有读数方便,测量时间短,测量…

DM数据库安装、登录和创建用户

DM数据库安装、登录和创建用户子安拉取镜像 wget -O dm8_docker.tar -c https://download.dameng.com/eco/dm8/dm8_20220822_rev166351_x86_rh6_64_ctm.tar docker load -i dm8_docker.tar docker images编写docker-compose.yml version: 3 services:dm8:image: dm8_single:v8.…

操作系统(九)进程通信

文章目录1 IPC1.1通信操作1.2通信链路的实现1.3通信分类1.3.1直接通信与间接通信直接通信间接通信1.3.2消息传递的特征1.4缓冲问题1.4.1容量问题2信号(signal)2.1原理2.2接收信号后处理方式2.3不足2.4实现3管道3.14消息队列5共享内存6socket机制1 IPC i…

为什么选择高防DNS云解析?

DNS(Domain Name System,域名服务器)是互联网的一项核心服务,是域名与对应IP地址进行转换的系统,可将易于记忆的域名转换为可由服务器识别的用于互连通信的数字IP地址。随着大数据时代的到来,传统DNS所存在…

C语言~指针变量

给自己找的基础啊~~ 给自己学 多谢大佬指点 别的勿扰 指针变量的基本操作基本操作 int a,*iptr,*jptr,*kptr; iptr &a; jptr iptr; *jptr 100; kptr NULL; 己址和己空间 指针变量也是一个变量,对应一块内存空间,对应一个内存地址…

DJ8-2 主存储器的组织

如何由存储芯片到存储器? 确定设计容量:多大设计容量 芯片的选用:多大容量,位数,多少片,如何分组 地址分配:将CPU提供的全部地址空间的哪些地址空间分配给所设计的存储器,确定各芯…

docker搭建zabbix服务

docker搭建zabbix服务zabbix简介1、本次安装zabbix的镜像版本2、zabbix组件2.1 创建子网2.2 MySQL容器2.3 zabbix-server-mysql容器2.4 zabbix-web-nginx-mysql容器2.5 zabbix-agent2容器2.6 zabbix-snmptraps容器3、zabbix访问3.1 中文字体修改zabbix简介 zabbix(…

esp32通过micropython-->MQTT--上传至腾讯云,实时显示温湿度数据保姆级教程(上)

esp32通过micropython-->MQTT--上传至腾讯云,实时显示温湿度数据保姆级教程(上)1.注册登录和创建产品:1.1注册账号/登录账号:1.2创建产品:1.注册登录和创建产品: 1.1注册账号/登录账号&…

销售人员应关注的 5 个指标

在上一篇博客 不想写代码,想要灵活性?这个指标平台全都有 中,我们提到了指标的分类一般分为基础指标、衍生指标和复合指标。其中基础指标可用于量化统计事务属性,如总金额等。而对于销售人员来说,最常接触/使用的指标是…

自动泊车的路径动态规划问题研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

【附源码】计算机毕业设计java支持协作知识建构的Python程序设计课程学习活动平台设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

iPhone通讯录如何完整导入到新手机

概要:iPhone通讯录如何完整导入到新手机?在此部分中,我们将示范几个从iPhone转移通讯录到另一台iPhone的选项。其中,第一种更为推荐,因为更灵活且更容易操作。当然您也可以根据自身情况选择喜欢的方法。 iPhone14已经发…

【HDLBits刷题笔记】12 More Circuits

Rule90 第一次见这东西有点莫名其妙,但是其实看懂了之后就是左移和右移相异或,注意这里使用的是逻辑右移,会自动补零,不能使用算数左移<<<。module top_module(input clk,input load,input [511:0] data,output reg[511:0] q ); always@(posedge clk)beginif(load…

QT调用OpenCV绘制直线、矩形、椭圆、圆、不规则曲线、文本

开发环境&#xff1a;QT5.14.2OpenCV4.5 提前准备&#xff1a;准备编译好的OpenCV开发环境(如自行编译的mingw版的opencv库&#xff0c;本地路径D:\opencv\qt_build64)&#xff0c;准备一张测试图片&#xff08;如&#xff1a;d:\test.jpg&#xff09;。 项目结构&#xff1a…

零零信安-DD数据泄露报警日报【第31期】

01 概述 2022.10.26共发现匿名网络资讯信息70,642条&#xff1b;最近7天共发现匿名网络资讯信息472,185条&#xff0c;同比增长-42%&#xff1b;最近30天共发现匿名网络资讯信息2,498,093 条。 D&D评论&#xff1a; 国际上&#xff0c;近日监测到国外公司源代码泄漏事件增加…