网站首页 » 前端开发 » JavaScript » ES6 let cost 基本命令
上一篇:
下一篇:

ES6 let cost 基本命令

说明迟,那时快,ES6 说来就来,作为前端水军不得不默默地开始 ES6 的学习之旅,时不我待,该拥抱时就必需拥抱。那就让我们开始吧!

与之前的变量声明不同,到了ES6 分工就非常地明确了。不像之前的简单粗暴一个 var 走遍天下都不怕。如今 ES6 把 var 折成了两个一个是 let 一个是 cost。但是在程序中你依然可以同时使用这三个命令。那么它们之间有什么异同呢?

首先我们先来看看ES6 中的两个基本命令是如何定义的:

  • let:用来发声明一个变量
  • cost: 用来发声明一个常量

这两个命令的共同点如下:

  • let 与 cost 的声明的变量和常量只在代码块({ })中有效
  • let 与 cost 的声明的变量和常量不会被提升
  • 不能重复声明已经被声明的变量或者常量

针对上面的三条,我们分别来举例说明:

例子一(只在代码块({ })中有效)
for(var i = 0;i<10;i++){
    let a = 1;
    const b = 2;
}

/**或者
{
    let a = 1;
    const b = 2;
}
**/
console.log(a);
/**
 * 报错:Uncaught ReferenceError: a is not defined
**/

console.log(b);
/**
 * 报错:Uncaught ReferenceError: b is not defined
**/

事实上打印 a 时已经报错,所以也不会往下执行了。

例子二(let 和 cost 声明的变量和常量不会被提升)
console.log(a);
/**
 * 报错:Uncaught ReferenceError: a is not defined
**/

console.log(b);
/**
 * 报错:Uncaught ReferenceError: a is not defined
**/

let a = 1;
const b = 2;

同上,打印 a 时已经报错,所以也不会往下执行了。

例子三(不能重复声明)
let a = 1;
const b = 2;

let a = 3;
/**
 * 报错:Uncaught SyntaxError: Identifier 'a' has already been declared
**/
const b = 4;
/**
 * 报错:Uncaught SyntaxError: Identifier 'b' has already been declared
**/

不同点:

  • let 声明的是变量,值是可更改的; cost 声明的常量,值是不可更改的
  • let 声明变量时可不赋值,但 cost 声明常量时就必需赋值
例子一(let 值可变,cost 值不可变)
let a = 1;
const b = 2;

a = 3;
console.log(a);
/**
 * 成功打印 3
**/
b = 4;
/**
 * 报错:Uncaught TypeError: Assignment to constant variable.
**/
例子二(let 声明时可不赋值,cost 声明时必需赋值)
let a;
const b;
/*
 * 报错:Uncaught SyntaxError: Missing initializer in const declaration
 */

从上面的这些个例子我们不难看出,let 和 cost 就是用来细分 var 的

  • var 没有块级作用域,let 和 cost 新增了块级作用域
  • var 声明的变量可提升,let 和 cost 声明的变量和常量不可以
  • var 可重复声明,而 let 和 cost 都不可以
  • var 声明的变量(包括变量和常量)是是可变的,let 声明的变量可变,cost 声明的常量不可变
  • var 声明变量是可不赋值,let 也var 相同,但 cost 声明的常量必需赋值

var 的,虽然这么说,但是 let 和cost 也是有别于 var 的,用一句话总结它们之间的关系就是 let 和 cost 命令把 var 硬生生地分成了两份,并且 let 和 cost 具有更多的限制,让随意的 JavaScript 变得更加严谨。

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/es6-let-cost/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论 END