乐闻世界logo
搜索文章和话题
中文

JS 中 use strict 的作用是什么?

4 个月前提问
21 天前修改
浏览次数12
2024年2月18日 16:57 提问

1个答案

1

use strict是JavaScript中的一个指令,用于开启严格模式。它于ECMAScript 5引入,主要有以下几个作用:

  1. 消除Javascript语法的一些不严谨之处:严格模式下,一些原本不会报错的编码习惯会抛出错误。例如,给未声明的变量赋值会抛出一个错误。

    javascript
    'use strict'; undeclaredVariable = 1; // ReferenceError: undeclaredVariable is not defined
  2. 消除一些静默错误:在非严格模式中,一些类型错误会被静默忽略。但在严格模式下,这些错误会被抛出,便于开发者发现并修复。

    javascript
    'use strict'; false.true = ''; // TypeError: Cannot create property 'true' on boolean 'false' (14).sailing = 'home'; // TypeError: Cannot create property 'sailing' on number '14'
  3. 提高编译器效率,增加运行速度:因为严格模式规避了一些语言特性,JavaScript引擎可以更容易地进行代码优化。

  4. 禁用了一些语言上容易混淆的特性

    • 不能使用with语句,因为它会改变作用域并导致优化问题。
    • 为对象的不可写属性赋值,为对象的只读属性赋值,为对象的不可扩展属性添加新属性,为禁止扩展的对象添加新属性,删除不可删除的属性等行为会抛出错误。
    • 函数的参数不能有同名属性,否则也会抛出错误。
    javascript
    'use strict'; function duplicateParam(p, p) { // SyntaxError: Duplicate parameter name not allowed in this context return p + p; }
  5. 为将来新版本的JavaScript做好准备:严格模式禁用了一些在未来语言标准中可能会被赋予新意义的语法,从而可以减少向后兼容问题。

如何应用use strict

  • 可以应用于整个脚本,只需在脚本顶部添加'use strict';
  • 也可以应用于单个函数,将它放在函数体的顶部。
javascript
function myFunction() { 'use strict'; // Function-level strict mode syntax var v = "Hi! I'm a strict mode script!"; }

使用严格模式有助于提升代码质量和可维护性,并且使得JavaScript代码更加安全。不过,也需要注意在混合使用严格模式和非严格模式代码时可能会遇到的兼容性问题。

2024年4月30日 13:29 回复

你的答案