美文网首页
Javascript严格模式

Javascript严格模式

作者: 自度君 | 来源:发表于2017-09-16 21:16 被阅读0次

如何调用

1.针对整个脚本文件
将"use strict"放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。如果这行语句不在第一行,则无效,整个脚本以"正常模式"运行。如果不同模式的代码文件合并成一个文件,这一点需要特别注意。
2.针对单个函数
将"use strict"放在函数体的第一行,则整个函数以"严格模式"运行。
3.因为第一种调用方法不利于文件合并,所以更好的做法是,借用第二种方法,将整个脚本文件放在一个立即执行的匿名函数之中。

  (function (){

    "use strict";
    // some code here

   })();

语法

1 全局变量显式声明
在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。
2 静态绑定
Javascript语言的一个特点,就是允许"动态绑定",即某些属性和方法到底属于哪一个对象,不是在编译时确定的,而是在运行时(runtime)确定的。
严格模式对动态绑定做了一些限制。某些情况下,只允许静态绑定。也就是说,属性和方法到底归属哪个对象,在编译阶段就确定。这样做有利于编译效率的提高,也使得代码更容易阅读,更少出现意外。
(1)禁止使用with语句
(2)创设eval作用域
正常模式下,eval语句的作用域,取决于它处于全局作用域,还是处于函数作用域。严格模式下,eval语句本身就是一个作用域,不再能够生成全局变量了,它所生成的变量只能用于eval内部。
3 增强的安全措施
(1)禁止this关键字指向全局对象
(2)禁止在函数内部遍历调用栈(caller,arguments)
4 禁止删除变量
严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。
5 显式报错
正常模式下,对一个对象的只读属性进行赋值,不会报错,只会默默地失败。严格模式下,将报错。

  "use strict";

  var o = {};
  Object.defineProperty(o, "v", { value: 1, writable: false });
  o.v = 2; // 报错

6 重名错误
(1)对象不能有重名的属性
(2)函数不能有重名的参数
7 arguments对象的限制
(1)不允许对arguments赋值
(2) arguments不再追踪参数的变化
(3)禁止使用arguments.callee

相关文章

  • JavaScript - 基础 - 2

    #JavaScript 严格模式(use strict) JavaScript 严格模式(strict mode)...

  • JavsScript严格模式

    严格模式 严格模式(strict mode):使 JavaScript 代码在更加严格的条件下运行。严格模式不仅仅...

  • javaScript变量提升

    JavaScript 严格模式(use strict)

  • 严格模式,高阶函数

    严格模式 1.1什么是严格模式 JavaScript 除了提供正常模式外,还提供了严格模式(strict mode...

  • JavaScript严格模式

    ‘use Strict’严格模式是ES5(JavaScript1.8.5)限定的一种对代码的语法和格式要求 1.严...

  • javascript 严格模式

    1、简述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。...

  • JavaScript 严格模式

    严格模式的限制 1.不允许使用未申明的变量.2.不允许删除变量或对象.3.不允许删除函数.4.不允许变量重名字.5...

  • Javascript严格模式

    如何调用 1.针对整个脚本文件将"use strict"放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。如...

  • Javascript 严格模式

    关键词:严格模式 优点 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; 消除代码运行的一...

  • JavaScript 严格模式

    严格模式(Strict Mode)出自 ECMAScript 5,推荐这一模式,主要出于以下几个方面的思考: 消除...

网友评论

      本文标题:Javascript严格模式

      本文链接:https://www.haomeiwen.com/subject/rsjusxtx.html