• javascript严格模式下的8点规则


     【作用】

      [1]消除js语法的一些不合理、不严谨、不安全问题,减少怪异行为并保证代码运行安全

      [2]提高编译器效率,增加运行速度

    【使用】

      [1]整个脚本启用严格模式,在顶部执行:"use strict";

      [2]在指定函数中执行严格模式,在函数体第一行:"use strict"

      [3]不支持strict模式的浏览器把"use strict"当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式

      [4]支持严格模式的浏览器包括IE10+、Firefox4+、safari12+、opera12+、chrome

    【规则】
    【1】变量
      [a]不允许意外创建全局变量

    "use strict";
    message = 'hello world!';

      [b]不能对变量调用delete操作符

    "use strict";
    var color = 'red';
    delete color;

    【2】对象
      [a]不能为只读属性赋值

    "use strict";
    var person = {
        name:'cook'
    };
    Object.defineProperty(person,'name',{
        writable: false
    });
    person.name = 'Nicholas';

      [b]不能为不可配置的属性使用delete操作

    "use strict";
    var person = {
        name:'cook'
    };
    Object.defineProperty(person,'name',{
        configurable: false
    });
    delete person.name;

    【3】函数
      [a]参数必须唯一

    "use strict";
    function sun(num,num){
        //TODO
    }

      [b]修改形参不会反映到arguments中

    function showValue(value){
        value = "Foo";
        alert(arguments[0]);
        //非严格模式:"Foo"
        //严格模式:"Hi"
    }
    showValue("Hi");

      [c]不允许使用arguments.callee和arguments.caller

    "use strict";
    function fn(num){
        return arguments.callee(num);
    }
    fn(2);
    "use strict";
    function outer(){
        inner();
    }
    function inner(){
        alert(inner.caller());
    }
    outer();

    【4】不允许eval()在包含上下文中创建变量或函数

    "use strict";
    function fn(){
        eval("var x=10");
        alert(x);
    }
    fn();
    //允许以下操作
    var result = eval("var x = 10, y = 11; x+y");
    alert(result);//21

    【5】不允许使用eval和arguments作为标识符,也不允许读写他们的值

    "use strict";
    var eval = 10;
    var arguments = 20;

    【6】不允许this值为null或undefined

    "use strict";
    var color = "red";
    function fn(){
        alert(this.color);
    }
    fn();

    【7】不允许使用with语句

    "use strict";
    with(location){
        alert(href);
    }

    【8】不允许使用八进制字面量

    "use strict";
    var value = 010;

     

  • 相关阅读:
    图解Python 【第八篇】:网络编程-进程、线程和协程
    TCP协议三次握手、四次挥手过程
    OSI七层模型与TCP/IP五层模型
    TCP/IP协议分为哪四层,具体作用是什么。
    app测试中,ios和android的区别
    APP在用户设备发生crash,应该怎么修复
    Android四层架构
    安卓四大组件、六大布局、五大存储
    测试工程师准备找工作,需要准备什么?
    接口测试响应码解析
  • 原文地址:https://www.cnblogs.com/xiaohuochai/p/4804903.html
Copyright © 2020-2023  润新知