ES6学习之const声明常量的学习

在ES中const关键字用来声明常量,与C#中的类似

const声明的一经定义不能修改 和let特性差不多,

const a = 13;
console.log(a);
a = 5;        //报错

const定义完常量后必须赋值,后面不允许再次赋值  

const aa;
const b; //报错  const定义完后,必须赋值,后面不允许赋值
b=5;
alert(b);

const c = 12;
(function () {
      console.log(c); //死区   访问不到
      const c = 5;    //不再同一个作用域

   }())

const声明的引用类型(对象)可以追加,但是不可以重新赋值

    const arr = [1, 2];
    // arr=[];      //报错
    arr.push(3);    //不报错
    console.log(arr);

    const obj = { name: 123, age: 18 };
    // obj={};         //报错
    obj.name = "小样儿";//不报错
    obj.sex = "女"; //不报错
    console.log(obj);    

如果想定义了不允许修改可以把它冻结 ---》 Object.freeze(需要冻结的参数)

    const myarr = [1, 2, 3, 4, 5, 6, 7];
    Object.freeze(myarr);       //冻结起来,冻结之后不能追加也不能修改
    myarr.push(8);      //报错了

如果是({})对象那么用 obj.xxx=“aaa”;方式不报错,但是不起作用

    const myobj = Object.freeze({
        name: "xiaoyang",
        age: 18,
    });
    myobj.age = 19;     //不报错,但是不起作用
    myobj.sex = ‘女‘;   //不报错,但是不起作用
    console.log(myobj); //输出{name: "xiaoyang", age: 18}

原文地址:https://www.cnblogs.com/heheblog/p/JavaScript_study_const.html

时间: 2024-10-09 15:29:23

ES6学习之const声明常量的学习的相关文章

ES6基础之const声明

问题 今天在分析React教程时,观察到如下代码: class Board extends React.Component { constructor(props) { super(props); this.state = { squares: Array(9).fill(null), }; } handleClick(i) { const squares = this.state.squares.slice(); squares[i] = 'X'; this.setState({squares

JS 使用const声明常量的本质

在我们使用const声明常量时,总认为值一旦声明就不可改变,其实是有误解的: 刚在看ES6标准文档时,仔细阅读了const的解析,恍然大悟的感觉,分享给大家. 本质 const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动.对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就

ES6学习之let声明变量的学习

1.let和var类似, (1)let与var不同的let没有预编译,变量提升这个过程,let声明的变量只能在当前作用域内访问到(一个{}可以看做是一个作用域) let a = 12; (function () { console.log(a); let a = 5; }()); 可见上面代码中是会报错的,如果a是var声明的,那么就不会报错.输出a的值是undefined (2)虽然说let声明的变量不允许重复声明,但是在for循环中貌似又是可以的 for (let i = 0; i < 10

Dart语言学习(二) Dart的常量和变量

1.使用var声明变量,可赋予不同类型的值 2.未初始化时候,默认值未null var a; print(a); a = 10; print(a); a = 'Hello Dart'; print(a); 输出: null 10 Hello Dart 3. 使用final声明一个只能赋值一次的变量 4. 使用const声明常量 使用const声明的必须是编译器常量 5.声明变量的方式 var : [编译期]确定[变量类型] dynamic : [运行期]确定[变量类型] bool int dou

ES6:let const

es5 声明变量 var variable = value; 存在的问题: 变量提升引起的问题 function get(condition) { if(condition) { var value = 'test'; return value; }else { return null; } } 在JS的预编译阶段,JS引擎会将上面的函数修改如下: function get(condition) { var value; if(condition) { value = 'test'; retur

var,let,const声明变量?

var 与 let 的区别? 1.var支持变量预检测,let不支持 console.log(a); // undefined 程序不会报错 var a = 1; console.log(b); //程序报错 b is not defined let b = 2; 2.let 不支持重复声明 var a = 1; var a = 10; console.log(a); // 10 let b = 2; let b = 200; console.log(b); //程序报错 Identifier

es6基础学习二 const

es5是没用常量声明这个选项,es6将其添加其中. 1.基本用法 const 声明一个只读常量.一旦申明,常量的值就不能改变. const PI = 3.1415; PI = 3; //SyntaxError const 声明的变量,一旦声明必须初始化(即赋值),否则报错. const foo; // syntaxError 除此之外,const的声明常量类似let声明的变量: a> 不存在变量提升 b> 只在声明所在的块级作用域内有效 c> 不能重复用var.let.const声明 e

ES6 - 基础学习(3): const关键字的本质

const 是如何做到变量在声明初始化之后不允许改变的? 其实 const 保证的不是变量的值不允许改变,而是保证该变量指向的内存地址所保存的数据不允许改变. 由于简单数据类型和复合数据类型保存值的方式不同: 对于简单类型的数据(数值 number.字符串 string .布尔值 boolean),值就保存在变量指向的内存地址内,因此 const 声明的简单类型变量就等同于常量. 而对于复杂类型(对象 object,数组 array,函数 function),变量指向的内存地址,实际上保存的只是

C++学习之const整理总结

1什么是const? (const类型)常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的.(但可以偷梁换柱进行更新) 2为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点. 3主要作用 (1)可以定义const常量,具有不可变性. 例如:const int Max=100; int Array[Max]; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患. 例如: void f(cons