hi,我又回来了,今天学习一下const命令。

声明一个常量

const声明一个只读常量,一旦声明,常量的值便不可改变。

例子如下:

const food = 12;
food = 23; // Uncaught TypeError: Assignment to constant variable.

还可以声明一个变量

const可以声明一个变量,声明以后,必须初始化,否则变错。

例子如下:

const food; // Uncaught SyntaxError: Missing initializer in const declaration

其他特性

constlet有许多相似点:

  • 只在其声明的块级作用域中有效;
  • 不存在作用域提升,是暂时性死区,必须先声明,后使用;
  • 不能重复声明,否则会报错

例子如下:

//1.只在其声明的块级作用域中有效
{
const food = 'apple';
}
console.log(food); // Uncaught ReferenceError: food is not defined //2.暂时性死区
{
console.log(HI); // Uncaught ReferenceError: HI is not defined
const HI = 'hello';
} //3.不能重复声明
{
const food = 'apple';
const food = 'orange'; // Uncaught SyntaxError: Identifier 'food' has already been declared
}

const的声明变量的本质

const声明的变量,并不是说变量的值不能改变,而是对于变量指向那个的内存地址所保存的数据不得改动。

  • 如果声明的变量是基本数据,那值就保存在变量指向的那个内存地址,可以理解为对于常量。

  • 但是如果声明的变量是一个引用数据类型,那只能保证变量保存的指针地址不变,至于变量里面的属性和值,就不能保证了。

注意:如果把这个声明的引用数据类型变量指向另一个对象,就会报错。

例如:


// 常量是一个对象
const About = {};
About.us = 'usb';
About.ua = 'usc';
console.log(About); // {us: "usb", ua: "usc"}
About = {}; // Uncaught TypeError: Assignment to constant variable. //常量是一个数组
const BALL = [];
BALL.length = 2;
BALL[0] = 'haha';
BALL = []; // Uncaught TypeError: Assignment to constant variable.

补充:声明变量的方法

  • ES5的varfunction命令。
  • ES6的letconst命令。

最后总结

其实,const也不是很难,只要你细心,就会发现非常的简单。

ES6之新增const命令使用方法的更多相关文章

  1. ES6中新增let命令使用方法

     在ES6中新增了let命令,该命令的用法与var 类似,但是所声明的变量只能在let命令所在的代码块(最接近let 命令的大括号内)中有效果.但是let 又有一些不同于var 的特性. 1.let定 ...

  2. ES6之新增let命令使用方法

    let命令的用法 let是es6中的声明一个变量的命令,只在它声明的代码块中有效,出了这个代码块就会报错.也非常适合for循环,在循环中i的值只在循环语句中生效,在外边取不到的. var命令声明的是一 ...

  3. ES6 let和const命令(3)

    const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...

  4. es6 let和const命令(1)

    基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...

  5. ES6 let和const命令(4)

    const声明的常量只在当前代码块有效.如果想设置跨模块的常量,可以采用下面的写法. //constants.js模块 export const A = 1; export const B = 3; ...

  6. ES6 let和const命令(2)

    为什么要使用块级作用域 在ES5中只有全局作用域和函数作用域,没有块级作用域,因此带来了这些麻烦 内层变量可能会覆盖外层变量 var tmp = new Date(); console.log(tmp ...

  7. ES6中的const命令【转】

    1.const声明一个只读常量,一旦声明,常量的值就不能改变 1 const PI=3.1415; 2 console.log(PI);//3.1415 3 4 PI=3;//Uncaught Typ ...

  8. ES6中的const命令

      1.const声明一个只读常量,一旦声明,常量的值就不能改变 1 const PI=3.1415; 2 console.log(PI);//3.1415 3 4 PI=3;//Uncaught T ...

  9. ES6 let和const命令

    一.let定义变量 { let a = 1;} console.log(a);只在let所在的代码块有效,console的结果是a is not defined,报错. 不存在var的变量提升,即使用 ...

随机推荐

  1. Redhat安装python环境(readline模块)

    多次尝试,发现linux下安装软件: yum install readline-devel readline patch yum update python -y # 这步很重要,修复了报错 pip3 ...

  2. vue.js和angular.js的区别

    关于Vue的描述: HTML模版+JSON数据,再创建一个Vue实例,就这么简单 关于Angular的描述: AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态 ...

  3. 09 Finding a Motif in DNA

    Problem Given two strings ss and tt, tt is a substring of ss if tt is contained as a contiguous coll ...

  4. Oracle学习笔记(一)

    用户与表空间 系统用户: 一.系统用户级别sys.system 最高级(sys级别高于system)sysman 操作企业管理器使用的scott 创始人之一的名字scott默认密码是tiger登录方法 ...

  5. 异步IO原理及相应函数

    何为异步IO? (1)几乎可以认为:异步IO就是操作系统用软件实现的一套中断响应系统.(2)异步IO的工作方法是:我们当前进程注册一个异步IO事件(使用signal注册一个信号 SIGIO的处理函数) ...

  6. 密码分析:使用 Ettercap 和 它的 ARP 毒化功能来嗅探流量

    vim /etc/etterconf 将 ec_uid 和 ec_gid 改为 0 需要取消下面的 IPTABLES 行的注释.它在靠近文件末尾的 LINUX 一节 ettercap -G Shift ...

  7. (博弈 sg入门2)

    接下来介绍Nim游戏(同样引用杭电上的,懒的打字) 1.有两个玩家:   2.  有三堆扑克牌(比如:可以分别是    5,7,9张):  3. 游戏双方轮流操作:  4. 玩家的每次操作是选择其中某 ...

  8. GameTOOL

    1.游戏的资源网站 http://www.gameres.com/yanfa_1.html

  9. 51nod1459迷宫问题—(迪杰斯特拉)

    1459 迷宫游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...

  10. polymer技巧

    1.添加一个div元素 我们完全可以自己造一个这样的东西出来,比如下面例子我们给 div 元素添加一个 is="demo-test" <script> var Poly ...