ICode9

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

JS严格模式(use strict)

2020-12-29 10:01:39  阅读:186  来源: 互联网

标签:use 严格 代码 JavaScript 模式 JS strict


js教程ECMAscript5 新增了严格运行模式。推出严格模式的目的如下:

  • 消除 JavaScript 语法中不合理、不严谨的用法。
  • 消除代码运行的一些安全隐患。
  • 提高编译器效率,提升程序运行速度。
  • 为未来新版本的规范化做好铺垫。
  • 本篇文章由 泉州SEO www.234yp.com 整理发布,js教程 www.234yp.com/Article/188251.html 谢谢合作!

启用严格模式

在代码首部添加以下一行字符串,即可启用严格模式。

"use strict"


不支持严格模式的浏览器会把它作为字符串直接量忽略掉。

首部就是指其前面没有任何有效的 JavaScript 代码。例如,以下用法都不会触发严格模式。

1) "use strict" 前有可执行的代码:

var width = 10;
'use strict';  /*无效的严格模式*/
globalVar = 100;


2) "use strict" 前有空语句:

;
'use strict';  /*无效的严格模式*/
globalVar = 100;

或者:

;'use strict1';  /*无效的严格模式*/
globalVar = 100;


注释语句不作为有效的 JavaScript 代码。例如,下面用法会触发严格模式。

//严格模式
'use strict';  /*有效的严格模式*/
globalVar = 100;


因此,只要前面没有会产生实际运行结果的语句,"use strict" 就可以不在第一行。

严格模式的应用场景

严格模式有两种应用场景,简单说明如下。

全局模式

将 "use strict" 放在脚本文件的第一行,则整个脚本都将以严格模式运行。如果不在第一行,则整个脚本将以正常模式运行。

下面示例在页面中添加两个 JavaScript 代码块,第一个代码块将开启严格模式,第二个代码块将按正常模式解析。

<script>
    "use strict";
    console.log("这是严格模式。");
</script>
<script>
    console.log("这是正常模式。");
</script>

局部模式

将 "use strict" 放在函数内首部,则整个函数将以严格模式运行。

下面示例定义了两个函数,其中第一个函数开启了严格模式,第二个函数按正常模式运行。

function strict(){
    "use strict";
    return "这是严格模式。";
}
function notStrict(){
    return "这是正常模式。";
}


全局模式不利于 JavaScript 文件合并。例如,如果一个开启了严格模式的 JavaScript 库,被导入到一个正常模式的网页脚本中,由于无法确保 "use strict" 位于脚本的首部位置,容易导致严格模式失效。因此,推荐的最佳实践是使用局部模式,将整个 JavaScript 文件脚本放在一个立即执行的匿名函数中,在匿名函数内启动严格模式。当 JavaScript 库文件被导入到不同模式的网页中,就不用担心严格模式失效了。

(function(){
    "use strict";
    // JavaScript库文件 代码
}) ();

严格模式的执行限制

严格模式对 JavaScript 的语法和行为有着严格的限制。对于初学 JavaScript 语言的读者来说,应该养成好的习惯。例如,变量必须先声明后使用,否则会抛出语法错误。

示例

执行下面代码,将会提示语法错误。因此,必须先用 var 语句声明,然后再使用。

"use strict";  //开启严格模式
v = 1;  //报错,v未声明


关于更多js教程内容,可以收藏本网页。
CCTV5直播简介: 天天直播将为您提供CCTV5、央视五台24小时高清直播

标签:use,严格,代码,JavaScript,模式,JS,strict
来源: https://blog.csdn.net/weixin_42034000/article/details/111880247

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

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

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

ICode9版权所有