美文网首页
js严格模式与解构赋值

js严格模式与解构赋值

作者: charmingcheng | 来源:发表于2019-04-12 16:04 被阅读0次
    严格模式

    ECMAScript 5 引入严格模式('strict mode')概念。通过严格模式,在函数内部选择进行较为严格的全局或局部的错误条件检测,使用严格模式的好处是可以提早知道代码中的存在的错误,

    及时捕获一些可能导致编程错误的ECMAScript行为。在开发中使用严格模式能帮助我们早发现错误。

    设立"严格模式"的目的,主要有以下几个:错误检测、规范、效率、安全、面向未来

    - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;

    - 消除代码运行的一些不安全之处,保证代码运行的安全;

    - 提高编译器效率,增加运行速度;

    - 为未来新版本的Javascript做好铺垫。

    进入"严格模式"的编译指示(pragma),是下面这行语句:

    "use strict"
    
    变量

    非严格模式下,a = 1可以创建一个全局变量。
    严格模式下,变量都必须先用var命令显示声明,然后再使用。 严格模式不允许意外创建的全局变量,否则会报错(Uncaught ReferenceError: v is not defined )。
    而且,严格模式不能对变量调用 **delete **操作符,会导致错误(Uncaught SyntaxError: Delete of an unqualified identifier in strict mode. )。
    非严格模式允许这样操作,但返回false 。
    别用这些词做变量名参数名 implements, interface, let, package, private, protected, public, static, yield。
    这些都是保留字,将来ECMAScript 版本中可能会用到他们。
    严格模式下作为其保留关键字,使用这些标识符作为变量名会导致语法错误。

    函数

    严格模式下参数名不能重复(Uncaught SyntaxError: Strict mode function may not have duplicate parameter names)
    非严格模式,函数内部实际访问的是第二个参数,要访问第一个参数必须通过arguments对象

    解构赋值

    var [x, y, z] = ['hello', 'JavaScript'];
    //x = hello, y = javascript, z = undefined
    

    对一个对象进行解构赋值时,同样可以直接对嵌套的对象属性进行赋值,只要保证对应的层次是一致的:

    var person = {
        name: '小明',
        age: 20,
        gender: 'male',
        passport: 'G-12345678',
        school: 'No.4 middle school',
        address: {
            city: 'Beijing',
            street: 'No.1 Road',
            zipcode: '100001'
        }
    };
    var {name, address: {city, zip}} = person;
    name; // '小明'
    city; // 'Beijing'
    zip; // undefined, 因为属性名是zipcode而不是zip
    // 注意: address不是变量,而是为了让city和zip获得嵌套的address对象的属性:
    address; // Uncaught ReferenceError: address is not defined
    

    变量交换赋值:

    var x=1, y=2;
    [x, y] = [y, x]
    

    快速获取当前页面的域名和路径:

    var {hostname:domain, pathname:path} = location;
    

    相关文章

      网友评论

          本文标题:js严格模式与解构赋值

          本文链接:https://www.haomeiwen.com/subject/zeafiqtx.html