美文网首页js程序员
ES6新特性之var 与 let ,const的区别

ES6新特性之var 与 let ,const的区别

作者: 秘果_li | 来源:发表于2017-02-22 18:45 被阅读0次

let命令

  • let命令用来定义变量,其定义的变量只在代码块内有效
    而var定义的变量在全局范围内都有效
{
var p=2;
let a = 1;
}
p // 2
a // ReferenceError
  • let命令没有变量提升
    若在定义一个变量之前使用该变量则会抛出 ReferenceError 错误
    而var则会将该变量视为 undefined
p = 3;
let p;  // ReferenceError
console.log(a); // 输出undefined
var a = 2;

(这个特性会迫使程序猿们养成先定义后使用的习惯, 同时避免var的 undefined 产生难以查找的错误)

  • let不允许重复声明同一变量
{
var a;
let a;    // error
}

{
let a=1;
let a;  //error
}

const命令

  • const用来声明一个只读的常量, 一旦声明,常量的值不可改变
    声明时必须初始化,否则会报错
const a = 1;
a = 5;  //TypeError: Assignment to constant variable.

const p;  //SyntaxError: Missing initializer in const declaration
  • const 只在声明其所在的块级作用域内有效
  • const 命令声明的常量也没有变量提升,只能在声明的位置后面使用
  • 同样不可重复声明同一变量
注意:

对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变

const a = [];
a.push('Java'); // 可运行 此时a为['Java']
a = ['script'];    // error
块级作用域的优点
  1. 避免内层变量覆盖外层变量
  2. 避免用来计数的循环变量泄露为全局变量
  3. 引入了块级作用域,允许在块级作用域之中声明函数


so

const 和 let 用起来

相关文章

  • 马蜂窝

    一面:async和await和promise三次握手es6新特性var,let,const区别html语义化原生实...

  • 面试

    ES6常用新特性和语法。 一、变量申明 ES6有var、function、let、const、import、cla...

  • react 入门基础(一)之ES6

    ####ES6 let const var 三者的区别 ### 1. let const 不能重复声明变...

  • javascript碎片知识000

    const let var 3者的区别。 const 和 let 为es6新增的定义变量的关键字。 var存在...

  • 总结一下前端常见javascript基础面试题:

    1.var ,let 和const的区别: let和const是es6新增的语法, let和var都可以定义变量,...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • js常见知识点--第二篇

    一、var 、let 、const的区别 var是ES5提出的,let和const是ES6提出的。var不存在块级...

  • ES6新特性学习

    ES6新特性学习 学习链接:http://es6.ruanyifeng.com/ var、let和const le...

  • es6总结一

    es6基础 let和const命令 let和const用于声明变量let跟var的区别 1、let定义过的变量不能...

  • ES6新特性之var 与 let ,const的区别

    let命令 let命令用来定义变量,其定义的变量只在代码块内有效而var定义的变量在全局范围内都有效 let命令没...

网友评论

    本文标题:ES6新特性之var 与 let ,const的区别

    本文链接:https://www.haomeiwen.com/subject/indmwttx.html