ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS基础知识---严格模式

2021-07-31 19:00:53  阅读:219  来源: 互联网

标签:use 错误 严格 引发 基础知识 --- strict var JS


JS Use Strict

  • “use strict”; 定义 JavaScript 代码应该以“严格模式”执行。
  • 本笔记参照W3School学习的

“use strict” 指令

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

它不算一条语句,而是一段文字表达式,更早版本的 JavaScript 会忽略它。
在严格模式中,您无法,例如,使用未声明的变量。
在这里插入图片描述

声明严格模式

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

  • 在脚本开头进行声明,拥有全局作用域(脚本中的所有代码均以严格模式来执行):
"use strict";
x = 3.14;       // 这会引发错误,因为 x 尚未声明
  • 在函数中声明严格模式,拥有局部作用域(只有函数中的代码以严格模式执行):
x = 3.14;       // 这不会引发错误
myFunction();

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

“use strict”; 语法

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

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

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

为什么使用严格模式?

严格模式使我们更容易编写“安全的” JavaScript。

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

**eg: **

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

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

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

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

  1. 在不声明变量的情况下使用变量,是不允许的
  2. 对象也是变量,在不声明对象的前提下使用对象也是不允许的
  3. 删除变量或者对象时不允许的
"use strict";
var x = 3.14;
delete x;                // 这将引发错误
  1. 删除函数是不允许的
"use strict";
function x(p1, p2) {}; 
delete x;                 // 这将引发错误
  1. 重复参数名是不允许的
"use strict";
function x(p1, p1) {};   // 这将引发错误
  1. 八进制数值文本是不允许的
"use strict";
var x = 010;             // 这将引发错误
  1. 转义字符是不允许的:
"use strict";
var x = \010;            // 这将引发错误
  1. 写入只读属性是不允许的:
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // 这将引发错误
  1. 写入只能获取的属性是不允许的:
"use strict";
var obj = {get x() {return 0} };

obj.x = 3.14;            // 这将引发错误 
  1. 删除不可删除的属性是不允许的:
"use strict";
delete Object.prototype; // 这将引发错误
  1. 字符串 “eval” 不可用作变量:
"use strict";
var eval = 3.14;         // 这将引发错误
  1. 字符串 “arguments” 不可用作变量:
"use strict";
var arguments = 3.14;    // 这将引发错误
  1. with 语句是不允许的:
"use strict";
with (Math){x = cos(2)}; // 这将引发错误
  1. 处于安全考虑,不允许 eval() 在其被调用的作用域中创建变量:
"use strict";
eval ("var x = 2");
alert (x);               // 这将引发错误
  1. 在类似 f() 的函数调用中,this 的值是全局对象。在严格模式中,现在它成为了 undefined。

对未来的保障

在这里插入图片描述

"use strict";
var public = 1500;      // 这将引发错误

警告:

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

标签:use,错误,严格,引发,基础知识,---,strict,var,JS
来源: https://blog.csdn.net/m0_53170889/article/details/119279754

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有