zoukankan      html  css  js  c++  java
  • ES5-ES6-ES7_严格模式

    运行模式

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

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

    严格模式的目的/作用

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

    严格模式的使用

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

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

    ussernam = 232;
    console.log(ussernam)

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

      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'
      }

     

  • 相关阅读:
    Mysql连接错误:Lost connection to Mysql server at 'waiting for initial communication packet'
    linux基本命令(4) 查看文件相关
    linux基本命令(3) 文件操作相关
    php 验证码不显示
    linux基本命令(2) 修改文件所属人以及权限
    linux 修改开机欢迎文字
    Mysql 自定义HASH索引带来的巨大性能提升
    Maven依赖范围<scope>
    深入理解Java G1垃圾收集器
    Redis EXISTS命令耗时过长case排查
  • 原文地址:https://www.cnblogs.com/LO-ME/p/10581931.html
Copyright © 2011-2022 走看看