JavaScript进阶学习笔记(五)--- 严格模式

news/2024/7/19 15:43:29 标签: javascript, js

一、严格模式

1、严格模式的概念

​ JavaScript 除了提供正常模式外,还提供了严格模式(strict mode)。ES5 新增的严格模式是采用具有限制性 JavaScript变体的一种方式,即在严格的条件下运行 JS 代码。格模式在 IE10 以上版本的浏览器中才会被支持,旧版本浏览器中会被忽略。

严格模式对正常的 JavaScript 语义做了一些更改:

​ 1.消除了 Javascript 语法的一些不合理、不严谨之处,减少了一些怪异行为。

​ 2.消除代码运行的一些不安全之处,保证代码运行的安全。

​ 3.提高编译器效率,增加运行速度。

​ 4.禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来新版本的 Javascript 做好铺垫。比如一些保留字如:class,enum,export, extends, import, super 不能做变量名

2、开启严格模式

​ 严格模式可以应用到整个script脚本或某个函数中。因此在使用时,我们可以将严格模式分为为脚本开启严格模式和为函数开启严格模式两种情况。

① 脚本开启严格模式
js"><script>
   "use strict"; //当前script标签开启了严格模式
</script>
<script>
  			//当前script标签未开启严格模式
</script>
② 函数开启严格模式
js">function fn(){
  "use strict";
  return "123";
} 
//当前fn函数开启了严格模式

3、严格模式对JavaScript语法和行为的限制

严格模式对 JS 做了很多限制:

​ 不允许使用未声明的变量、不允许删除变量或对象、不允许删除函数、不允许变量重名、不允许使用八进制、不允许使用转义字符、不允许对只读属性赋值、不允许对一个使用getter方法读取的属性进行赋值、不允许删除一个不允许删除的属性、变量名不能使用 “eval” 和"arguments" 字符串、在作用域 eval() 创建的变量不能被调用、禁止this关键字指向全局对象、新增了一些保留关键字等等。

js"><script>
	        'use strict';
        // 1. 我们的变量名必须先声明再使用
        // num = 10;
        // console.log(num);
        var num = 10;
        console.log(num);
        // 2.我们不能随意删除已经声明好的变量
        // delete num;
        // 3. 严格模式下全局作用域中函数中的 this 是 undefined。
        // function fn() {
        //     console.log(this); // undefined。

        // }
        // fn();
        // 4. 严格模式下,如果 构造函数不加new调用, this 指向的是undefined 如果给他赋值则 会报错.
        // function Star() {
        //     this.sex = '男';
        // }
        // // Star();
        // var ldh = new Star();
        // console.log(ldh.sex);
        // 5. 定时器 this 还是指向 window 
        // setTimeout(function() {
        //     console.log(this);

        // }, 2000);
        // a = 1;
        // a = 2;
        // 6. 严格模式下函数里面的参数不允许有重名
        // function fn(a, a) {
        //     console.log(a + a);

        // };
        // fn(1, 2);
        function fn() {}    
</script>

4、了解不深 后续补充


http://www.niftyadmin.cn/n/803656.html

相关文章

激光推送

1&#xff0c;首先需要将你的app在极光官网上进行注册&#xff0c;获取一个ApiKey&#xff0c;一个APIMasterSecret&#xff08;密码&#xff09;&#xff0c;将这两个值保存在配置文件&#xff08;app/web.config&#xff09;中&#xff0c;具体手机开发端需要做什么操作我们.…

JavaScript进阶学习笔记(六)--- 正则表达式

一、正则表达式 1、正则表达式概述 ​ 正则表达式&#xff08; Regular Expression &#xff09;是一种用于匹配字符串中字符组成的模式&#xff0c;用来检测某个字符串的组成是否符合某种要求或规则&#xff0c;通常用来验证表单&#xff1a;例如验证用户名只能由英文字母、…

配置Tomcat虚拟路径

Tomcat虚拟路径&#xff1a;作用类似于访问某个设定的路径时&#xff0c;根据虚拟路径的配置去访问一个绝对路径下的项目 1.E盘根目录下创建demo文件夹(E:\demo)。复制Tomcat目录下的webapps\ROOT中的WEB-INFO文件夹到demo文件夹。 (里面带有一个web.xml文件) 2.在tomcat\conf下…

JavaScript进阶学习笔记(七)--- ES6相关

一、ES6的概念 ​ ES 的全称是 ECMAScript &#xff0c;6 是指 版本 &#xff0c;是由 ECMA 国际标准化组织制定的一项脚本语言的标准化规范。ES6 的出现修改了 JavaScript 一些不足之处&#xff0c;使其更加完善。 二、ES6新增语法 1、let ​ ES6 中新增了 let 关键字用来…

AngularJS 学习笔记(一)--- 表达式和指令

注&#xff1a;最近实习的公司接手了一个17年的项目用到了 AngularJS &#xff0c;让我去做一些东西&#xff0c;我想既然用到了 那我就整理一下学习笔记吧&#xff0c;也算留个印象。但肯定比较粗糙&#xff0c;只是说怎么用&#xff0c;而不去深入探究原理机制 一、AngularJ…

thinkerCMS是一款thinkphp写的微型cms框架可以参考下

http://www.thinkphp.cn/code/1764.html thinkphp官网thinkercms介绍 http://cms.thinkerphp.com/下载地址 转载于:https://www.cnblogs.com/gzyx1988/p/5284096.html

AngularJS 学习笔记(二)--- 模块、控制器和过滤器

一、模块 Module 1、概念 ​ 模块定义了一个应用程序&#xff0c;是控制器的容器&#xff0c;模块的范围限制了 应用程序的作用范围。模块是配置代码块和运行代码块的集合&#xff0c;在启动阶段被执行。通过 angular.module 来创建模块。 ​ 模块创建时可以列出 他所依赖的…

.Net Core CLI windows安装

下载官方的msi安装包 official MSI installer双击安装就可以了。 默认会安装到C:\Program Files\dotnet\目录下&#xff0c;如果找不到可以用命令 where dotnet查看&#xff0c;或者查看环境变量path 官方文档说&#xff1a; 如果你使用的是win7&#xff0c;win8或者windows se…