ES5-ES6-ES7_严格模式

运行模式浏览器

正常(混杂)模式与严格模式,除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(strict mode)安全

顾名思义,这种模式使得Javascript在更严格的语法条件下运行函数

 

 

严格模式的目的/做用this

1. 消除Javascript语法的一些不合理、不严谨之处,减小一些怪异行为
2. 消除代码运行的一些不安全之处,为代码的安全运行保驾护航
3. 为将来新版本的Javascript作好铺垫spa

 

 

严格模式的使用code

在全局或函数的第一条语句定义为: 'use strict';
若是浏览器不支持, 只解析为一条简单的语句, 没有任何反作用对象

 

 

语法和行为改变
必须用var声明变量,正常模式下一个变量能够不使用var或者let来声明,这样变量会自动提高到window对象下,执行不报错,但加了严格模式的时候就会报错了blog

ussernam = 232;
console.log(ussernam)

禁止自定义的函数中的this指向windowip

  function Person(age, name) {
    this.age = age
    this.name = name
  }

  // 使用的时候要使用new,这以后this才会指向实例对象,不new直接调用的时候this指向的是window
  // 非严格模式下不会报错,严格模式下就会报错了
  Person(32, 'huang')

 建立eval做用域,加了严格模式的话eval有本身的做用域,里面建立的对象只属于eval里面的做用域作用域

var str = "NBA"
  // eval方法能够解析字符串里的js代码
  // 不使用严格模式的话eval没有本身的做用域 ,若是里面的字符串是请求回来的数据,里面有重名的变量这样就会很不安全,会污染本身定义的全局变量
  // eval里面写的变量至关于在全局执行
  eval('var str = "CBA"; alert(str)');
  alert(str) // 结果仍是CBA

 对象不能有重名的属性

// 在正常模式下,对象的属性有重名不会报错
  // 在严格模式下,对象的属性有重名会报错
  var obj = {
    userName: 'ff',
    userName: 'ff'
  }
相关文章
相关标签/搜索