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

    1、去除with

    我好像从没用过with

    2、局部变量再赋值前必须声明

    我好像一直这样做的

    3、this不再默认指向全局

    sayColor.call();
    sayColor.call(null);
    sayColor.call(undefined);
    //都提示错误

    执行构造函数需要new:this在被赋值之前会一直保持为undefined,这意味着当一个构造函数在执行时,如果之前没有明确的new关键词,会抛出异常。

    function Person(name){
    	this.name = name;
    }
    var me = Person('sfp');  // error
    var me = new Person('sfp');
    

    4、防止重名

    5、eval

    (function(){
    	eval('var a = 0;');
    	var result = eval('var x = 10, y = 20; x + y;');
    
         // 在eval()中执行的变量和函数申明不会直接在当前作用域中创建相应变量或函数 alert(a);
         // 任何在eval()执行过程中创建的变量或者函数保留在eval()中。但你能明确的从eval()语句的返回值来获取eval()中的执行结果 alert(result); }());

    6、对只读属性修改时抛出异常

    var person = {};
    Object.defineProperty(person, 'name', {
    	writable: false,
    	value: 'sfp'
    });
    person.name = 'wj';  //不能修改
    

      

    使用

    不要再全局环境下启动strict

    两种方式

    // 单个函数strict
    function doSomething() {
        "use strict";
        // 这个函数中的代码将会运行于严格模式
    }
    function doSomethingElse() {
        // 这个函数中代码不会运行于严格模式
    }
    
    // 多个函数同时strict
    (function() {
        "use strict";
        function doSomething() {
            // 这个函数运行于严格模式
        }
        function doSomethingElse() {
            // 这个函数同样运行于严格模式
        }
    }());
    

      

      

      

  • 相关阅读:
    NC nc5.x报表设置合计行是否显示
    NC 单据保存时间过长,判断数据库锁表解决办法
    NC JDK报tools.jar错误(61版本)
    Python 基本语法 学习之路(三)
    html history
    页面跳转
    Html5 学习系列(六)Html5本地存储和本地数据库
    微信支付
    jquery分析网址
    在一个js文件中引用另一个js文件
  • 原文地址:https://www.cnblogs.com/wang-jing/p/4815575.html
Copyright © 2011-2022 走看看