ES6入门-let和const指令

LET:javascript

基本用法:在javascript中声明一个变量一般使用var ,在es6中新增了let指令,用法相似var ,可是let声明的变量只能在所在的代码块有效。java

⚠️  使用let声明变量要注意一下几个点:es6

1,let指令不存在变量提高,因此变量必定要先声明后再使用,不然就会报错。浏览器

console.info(info);   //ReferenceError
let info;

2, 存在暂时性死区,也就是说,只要一个块级做用域中使用let声明了某个变量,那么这个变量就被绑定在这个区块了。外界对它是影响不到的。ide

var  info = 123;

if(true){
    info = "abc"; //ReferenceError
    let info;  
}

  以上这段代码中存在全局变量info 可是在区块中又使用let声明了一个info变量,因此这个变量info就被绑定在块级做用域中,因此会报错。(😖  疑问:为何全局变量不用let来声明?是由于let声明语句是不能重复声明一个变量??)函数

3, 不容许重复声明,let指令不容许在相同的做用域内重复声明一个变量es5

//报错
function(){
    let aa = 10;
    var aa = 3;
}


//报错
function(){
    let aa = 10;
    let aa = 3;
}


// 也不能在一个函数内部从新声明参数
function(arg){
    let arg = 10;
}

 CONST:spa

const 用来声明常量。⚠️一旦声明便不可改变其值。code

一,与let的共同点:对象

1,只能在声明所在的块级做用域没有效

2,只能在声明后使用

3,const指令声明的常量也不可提高,一样存在暂时性死区,只能在声明后使用

4,不可重复声明常量

 

tips1 : 若是想设置跨模块常量可使用一下写法:

// constants.js

export const a = 1;
export const b = 2;
export const c = 3;

// test1.js

import * as constants from './constants';
console.info(constants.a);  // 1
console.info(constants.b);  // 2
console.info(constants.c);  // 3



//test2.js

import {a, b} from './constants';
console.info(a);  // 1
console.info(b);  // 2

 

全局对象的属性

全局对象是最顶层的对象,在浏览器环境指的是window对象,在nide.js中指的是global对象,在es5中,全局对象的属性与变量是等价的。 以下:全局对象属性赋值和全局变量的赋值是一件事。

window.a = 1;   // a=1

a = 2; //a = 2

如上规定,很容易不自觉的建立了全局变量,ess6为了改变这一点,一方面规定,var命令和function命令声明的全局变量依旧是全局对象的属性,另外一方面规定,let、const、和class命令声明的全局变量不属于全局对象的属性。

var a = 2;
window.a; // 2

let b = 3;
window.b;  //undefined

 

二,在es5和es6中的声明命令

es5:var  function

es6 : var  function  let  const  class

相关文章
相关标签/搜索