• 关于js的严格模式


    最近在看你不知道js,补充自己的js基础,加深理解。在读的过程中写点笔记。

    严格模式下与非严格模式的区别 。 严格模式是es5新增的,es6是默认为严格模式的!js默认状态下是非严格模式的!
     
    一般的自动化构建工具如webpack,gulp也是开启了严格模式的!
     
    1  严格模式下, delete运算符后跟随非法标识符(即delete 不存在的标识符),会抛出语法错误;非严格模式下,会静默失败并返回false
     
    2  严格模式中,对象直接量中定义同名属性会抛出语法错误; 非严格模式不会报错
     
    3  严格模式中,函数形参存在同名的,抛出错误; 非严格模式不会
     
    4  严格模式不允许八进制整数直接量(如:023)
     
    5  严格模式中,arguments对象是传入函数内实参列表的静态副本;非严格模式下,
      arguments对象里的元素和对应的实参是指向同一个值的引用
     
    6  严格模式中 eval和arguments当做关键字,它们不能被赋值和用作变量声明
     
    7  严格模式会限制对调用栈的检测能力,访问arguments.callee.caller会抛出异常
     
    8  严格模式 变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with,
     
    9  严格模式中 call apply传入null undefined保持原样不被转换为window
     
    测试是否为严格模式的函数。
    原理是:严格模式下,函数内this并不会指向window,而是undefined.
    正常情况下开启严格,只需在js头部声明 'use strict'
    var hasStrictMode = function() {
    "use strict";
    return this === undefined
    }
     
    设立"严格模式"的目的,主要有以下几个:
      - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
      - 消除代码运行的一些不安全之处,保证代码运行的安全;
      - 提高编译器效率,增加运行速度;
      - 为未来新版本的Javascript做好铺垫。
     
    据说在大公司如果没用严格模式可能会罚款几百块哦。
     
     

  • 相关阅读:
    memcached基础与配置详解
    最小化安装CentOS基础命令
    源码编译redis及解决三个开机告警问题
    HAProxy之一----HAPproxy配置参数详解
    HAProxy之二----HAProxy实现高级负载均衡实战和ACL控制
    6 SQL语言——distinct去重
    5 SQL语言——连接符
    04 Oracle Sql语言API
    03 Oracle——用户密码忘记重置
    02 Oracle——账号管理
  • 原文地址:https://www.cnblogs.com/hjj2ldq/p/9256621.html
Copyright © 2020-2023  润新知