关于es6:ES6新增语法一letconstvar的区别

7次阅读

共计 1159 个字符,预计需要花费 3 分钟才能阅读完成。

ES6 简介

ES6 是 ECMAScript 6.0 的简称,是 javascript 语言的下一代规范,曾经在 2015 年 6 月正式公布上线。目标就是为了对立 javascript 的语法规范,能够用来开发大型应用程序,称为企业级开发语言。

ES6 与 JavaScript 的关系:
ES6 是 JavaScript 的标准规范,JavaScript 是 ES6 的一种实现。

变量 / 赋值

块级作用域 {}
ES5 中作用域有:全局作用域、函数作用域,没有块作用域的概念。ES6 新增了块级作用域,块作用域由{} 包含,if 语句外面的 {} 也属于块级作用域。

// 通过定义的变量能够跨块作用域拜访到
{
  var a = 12;
  console.log("a",a)
}
console.log("a",a)
// 通过 var 定义的变量不能通过跨函数作用域拜访到
(function(){var b = 5;})()
console.log("b",b) // not defined

var 与 let 和 const 区别:

类型 定义 变量类型 作用域
var 能够反复定义 是变量,不能限度批改 没有块级作用域
let 不能反复定义 是变量 块级作用域,不能跨块拜访
const 不能反复定义 是常量,初始化时必须赋值 块级作用域,不能跨块拜访

const 定义的对象属性是否能够扭转?

实例 1:批改对象的属性值。

const per = {name:'倩倩'}
per.name = "我是嘻哈"
console.log("per.name",per.name) // 打印出我是嘻哈

通过上个实例,咱们发现对象的属性是能够批改的,这是什么起因呢?

对象是援用类型的,per 中保留的仅是对象的指针,意味着指针不会产生扭转,批改对象的属性不会扭转对象的指针,所以是容许批改的。

赋值:新增解构赋值,就是对数据拆解并赋值。解构赋值的两个规定:

  • 左右两边模式必须统一
  • 必须让定义和赋值同步实现。

实例 2:正确的构造赋值

let [a,b,c] = [1,2,3]
console.log("a",a)//1
console.log("b",b)//2
console.log("c",c)//3

实例 3:左右两边模式统一,数据长短不同时

let [bar, foo] = [1];
console.log("bar",bar)//1
console.log("foo",foo) // undefined

上述解构不胜利,变量值等于 undefined。

留神:对象也是能够解构的,然而须要留神的是对象和数组的解构有很大的区别,对象的属性没有秩序,变量必须与属性同名,能力取到正确的值。

实例 4:对象的解构赋值

let {bar,foo} = {
  foo:'aaa',
  bar:'bbb'
}
console.log('bar',bar)
console.log('foo',foo)
console.log('baz',baz) // not defined
正文完
 0