美文网首页
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严格模式与解构赋值

    严格模式 ECMAScript 5 引入严格模式('strict mode')概念。通过严格模式,在函数内部选择进...

  • 解构赋值

    解构赋值 数组的解构赋值 嵌套,默认值,展开符 对象的解构赋值 对象解构赋值的本质与简写 对象解构的模式与变量 对...

  • ES6——解构赋值

    解构赋值 解构赋值说白了就是一种模式匹配,等号左右两边对应变量和值。解构赋值可以是完全解构赋值,即每个值与右边一一...

  • 阮一峰es6要点总结——解构赋值

    原文地址 解构赋值 核心思想——模式匹配 基本概念 用法: 数组解构赋值 对象解构赋值 字符串解构赋值 数值和布尔...

  • JS基础:ES6关于基本语法的一些扩展

    目录一. 解构赋值 1. 数组的解构赋值 2. JS对象的解构赋值 3. 解构赋值的应用场景二. 字符串的扩展 1...

  • ES6标准入门 摘要 (解构赋值)

    解构赋值 数组的解构赋值 如果等号的右边不是数组(或者严格地说,不是可遍历的结构),那么将会报错。 对象的解构赋值...

  • javaScript之ES6(二)

    解构赋值 解构赋值 变量的赋值可以按照一定的模式批量赋值 数组模式 根据下标一一对应赋值var [a,b,c] =...

  • ES6 学习(数组解构篇)

    - 数组解构赋值 解构例子 错误解构例子 解构赋值允许指定默认值 ES6 内部使用严格相等运算符(===)判断一个...

  • ES6知识点复习(二)

    变量的解构赋值 解构赋值允许指定默认值,es6内部使用严格相等运算符 === 默认值可以引用解构赋值的其他变量,但...

  • ES6解构赋值

    解构赋值 按照一定的模式,从数组或对象中把数据拿出来,对变量进行赋值 一、数组解构赋值 等号左边与右边必须都是数组...

网友评论

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

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