zoukankan      html  css  js  c++  java
  • js严格模式与非严格模式的区别

    严格模式和非严格模式的区别

     
    //f1.js
     
    'use strice'; //整个js文件都是严格模式下执行的
     
    var n = 1;
     
    var foo = function(){...};
     
    //...

    var n = 1; var foo = function(){ 'use strict'; //在foo函数内是严格模式 //some code... }
    1. 严格模式下, delete运算符后跟随非法标识符(即delete 不存在的标识符),会抛出语法错误; 非严格模式下,会静默失败并返回false

    1. 严格模式中,对象直接量中定义同名属性会抛出语法错误; 非严格模式不会报错

    2. 严格模式中,函数形参存在同名的,抛出错误; 非严格模式不会

    3. 严格模式不允许八进制整数直接量(如:023)

    4. 严格模式中,arguments对象是传入函数内实参列表的静态副本;非严格模式下,arguments对象里的元素和对应的实参是指向同一个值的引用

    5. 严格模式中 eval和arguments当做关键字,它们不能被赋值和用作变量声明

    6. 严格模式会限制对调用栈的检测能力,访问arguments.callee.caller会抛出异常

    7. 严格模式 变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with,

    8. 严格模式中 call apply传入null undefined保持原样不被转换为window

  • 相关阅读:
    高级算法(1):
    spark浅谈(3):
    linux学习笔记(1):
    数据分析之pandas(1)
    数据分析之期权
    数据分析之蒙特卡洛模拟
    未能加载文件或程序集"xxxxxx"或它的某一个依赖项
    未能映射路径"/"
    部署MVC项目ManagedPipelineHandler报错
    IIS记录
  • 原文地址:https://www.cnblogs.com/zhonghonglin1997/p/10198066.html
Copyright © 2011-2022 走看看