资讯专栏INFORMATION COLUMN

let 以及 const

RaoMeng / 305人阅读

摘要:相关知识点以及命令声明的变量只在它所在的代码块有效。命令声明的常量也是不提升,同样存在暂时性死区。对于简单的数据数值字符串布尔值,值就保存在变量指向的那个内存地址,因此等同于常量。

es6 相关知识点  let 以及 const

let命令

let 声明的变量只在它所在的代码块有效。

//let 声明 只在当前作用域有效
var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6

//var 声明 在全局作用域有效
var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10

let 不存在变量提升,在let声明之前使用变量,会报错ReferenceError

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;

let 不允许重复声明

// 报错
function () {
  let a = 10;
  var a = 1;
}

// 报错
function () {
  let a = 10;
  let a = 1;
}

不能在函数内部重新声明参数

function func(arg) {
  let arg; // 报错
}

function func(arg) {
  {
    let arg; // 不报错
  }
}

const 命令

一旦声明,常量的值就不改变,只在声明所在的块级作用域有效。

const 命令声明的常量也是不提升,同样存在暂时性死区。

本质: const 实际上保证的,不是变量的值不能改动,而是变量指向的那个内存地址不得改动。对于简单的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型(引用类型)的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针, const 只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,不能控制。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85110.html

相关文章

  • ES6学习第一节 块级作用域的声明以及绑定 (一) let声明

    摘要:块级作用域绑定变量声明的变量声明与其他的一些计算机语言不同,在类的语言中,变量总是在被声明的地方创建而在中变量创建的位置取决于你如何声明它,为我们提供了新的声明方式用来让开发者能够更好的控制变量的作用域我们通过声明的变量,无论其声明位置在哪 块级作用域绑定 1.变量声明 JS的变量声明与其他的一些计算机语言不同,在类C的语言中,变量总是在被声明的地方创建;而在JS中变量创建的位置取决于...

    chanthuang 评论0 收藏0
  • 初入ES6-letconst以及代码块

    摘要:变量和常量的声明一般的声明,不在函数内就是全局变量,值可以是基本和引用值,可以随时修改和删除语法同一个作用域的声明,只要有同样的声明都会报错,只能修改值语法,和一样,但是不能更改值以上两个语法都不存在变量提升的效果直接使用的话,直接引用错误 变量和常量的声明 var a = 34; //一般的声明,不在函数内就是全局变量,值可以是基本和引用值,可以随时修改和删除 ...

    wwolf 评论0 收藏0
  • vue分析之template模板解析AST

    摘要:注意看注释很粗很简单,我就是一程序员姓名,年龄,请联系我吧是否保留注释定义分隔符,默认为对于转成,则需要先获取,对于这部分内容,做一个简单的分析,具体的请自行查看源码。其中的负责修改以及截取剩余模板字符串。 通过查看vue源码,可以知道Vue源码中使用了虚拟DOM(Virtual Dom),虚拟DOM构建经历 template编译成AST语法树 -> 再转换为render函数 最终返回...

    2bdenny 评论0 收藏0
  • ES6 系列之 letconst

    摘要:块级作用域存在于函数内部块中字符和之间的区域和块级声明用于声明在指定块的作用域之外无法访问的变量。和都是块级声明的一种。值得一提的是声明不允许修改绑定,但允许修改值。这意味着当用声明对象时没有问题报错临时死区临时死区,简写为。 块级作用域的出现 通过 var 声明的变量存在变量提升的特性: if (condition) { var value = 1; } console.lo...

    PascalXie 评论0 收藏0
  • javascript中var、letconst声明的区别

    摘要:声明的变量存在变量提升,声明的变量不存在变量提升。声明的变量允许重新赋值,声明的变量不允许重新赋值。注意跨脚本声明重复变量也会报错。中出现的任何元素在声明中出现,语法错误。中的是如此的怪异。对中的声明进行实例化。 我在上一篇文章javascript中词法环境、领域、执行上下文以及作业详解中的最后稍微提到了有关var、let、const声明的区别,在本篇中我会重点来分析它们之间到底有什么...

    Yujiaao 评论0 收藏0

发表评论

0条评论

RaoMeng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<