zoukankan      html  css  js  c++  java
  • JS严格模式

    来源:Javascript 严格模式详解

    精简总结一下阮大神的文章,严格模式下:

    • "use strict" 必须是当前作用域(全局作用域或者函数作用域)中第一句实际运行的语句,否则当前作用域内不会被严格模式所约束
    • 当需要多个js合并成一个时,要使用严格模式,最好是使用 IIFE
    • 变量必须声明后再使用
    • 禁止使用with语句
    • eval中语句的执行环境属于第三种作用域,拥有自己的作用域
    • 全局环境中的this指向undefined
    • 严格模式下的函数作用域内,禁止使用函数对象的caller和arguments属性,也禁止使用arguments.callee
    • 只有configurable设置为true的对象属性,才能被删除
    • 不符合语义的操作会被拒绝、显式报错
    • 不允许重名属性名、函数形参名
    • 禁止以0开头来表示8进制数
    • 不允许使用arguments来当变量名、arguments不再追踪参数的变化。以下代码在 非严格模式下,输出 999
      "use strict"
      function f(a){
          arguments[0] = 999;
          console.log(a)
      }
      f(1) // 1
    • 只允许在全局作用域或函数作用域的顶层声明函数【因为块作用域还没出现,所以这一条约束在当前来说,没起什么作用和影响】

    Caller和Callee

      如果一个函数f是在全局作用域内被调用的,则f.caller为null,相反,如果一个函数是在另外一个函数作用域内被调用的,则f.caller指向调用它的那个函数对象

      https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/callee

  • 相关阅读:
    drf认证组件
    播放音频
    推荐
    makefile编写
    qt文件操作mv
    qt文件http网络下载
    为qt在window上用源代码编译库 (部分转载)
    qt线程池(转)
    crc校验
    树莓派网络配置查询
  • 原文地址:https://www.cnblogs.com/hellohello/p/7528493.html
Copyright © 2011-2022 走看看