1同来学ES6,js中var和let的短平快分歧

By admin in 4858美高梅 on 2019年4月9日

先看上边包车型地铁多少个例证:

在react-native中,经常看到用let和const 注明变量。它们是ES陆新增的用来声称变量的法子。它们的用法类似于var,不过和我们所耳熟能详的var注明出来的变量又有点不1样。
let命令:
一、let所注解的变量,只在let命令所在的代码块内卓有功用。
{
let a = 1;
var b = 2;
1同来学ES6,js中var和let的短平快分歧。}
console.log(a) //会报错
console.log(b) //打印2
上边代码中,分别用let和var注脚了多少个变量。然后在代码块之向外调拨运输用那三个变量,结果let表明的变量报错,var注解的变量重返了不错的值。那标志,let注脚的变量只在它所在的代码块有效。
let不容许在平等代码块中,重复注明同一个变量。
function func() {
let a = 10;
let a = 1;
} // 报错
二、不设有变量提高
var命令会爆发”变量提高“现象,即变量可以在表明在此之前运用,值为undefined。可是根据一般的逻辑,变量应该在注明语句之后才方可采取。
let改变了这一气象,为了顺应逻辑,let命令所注解的变量一定要在申明后选取,不然报错。
console.log(aa); // undefined
var aa = 2;
console.log(bb); // 报错
let bb = 2;
地点代码中,变量aa用var命令注脚,会发生变量提高,aa是存在的,不过并没有值,所以输undefined。变量bb用let命令注明,不会时有发生变量升高。在申明它前边,变量bb是不存在的,那时假使用它,就会报错。
const命令:
1、const声明一(Wissu)(Karicare)个只读的常量。1旦声明,常量的值就不可能更改。
const x = 5;
x = 3;//错误
const评释的变量不得转移值,那意味着,const1旦证明变量,就必须即刻初阶化,不可能留到以往赋值。
const的功用域与let命令相同:只在宣称所在的块级功效域内有效。
const申明的常量,也与let壹样不可重复证明。
ES陆 添加的let和const命令很广泛,作者觉着最器重的天性正是那一个。
Thanks♪(・ω・)ノ。

自小编的民用微信公众号“美貌微阅读”(微信号”jcwyd201陆”)[不是订阅号,正是多个阅读调换的小平台],没时间阅读的能够来看一下,本人写的某些阅览知识点总括,希望能对大家全部帮助~涉及经济政治法律理财规划种种地点的图书

let 

留存块级功用域

(1)外层效率域取不到内层成效域的变量

(二)内层功效域可以定义外层成效域的同名变量。

所注明的变量,只在let命令所在的代码块内有效

if(true){

let a = “123”;

console.log(a);  //123

}

console.log(a);       //ReferenceError  a is not undefined

for循环还有多个特别之处,正是设置循环变量的那有个别是二个父功效域,而循环体内部是多个独自的子作用域

for(let i=0;i<3;i++){

    let i=’abc’;

    console.log(i);

}

// abc// abc// abc

地点代码不易运营,输出了 叁回abc。那标志函数内部的变量i与循环变量i不在同三个成效域,有些独立的功效域。


不设有变量进步:在变量证明在此之前运用,都以会报错的。在此之前的var注脚的变量可以变量进步,在变量申明此前运用,值为
undefined。可是采纳let注解的变量,一定要在let表明之后


 暂行死区:在代码块(块级功效域)内部存款和储蓄器在let命令它所申明的变量,就“绑定”那些区域,不再受外界影响。

例子:

4858美高梅,var temp = 123;

if(true){

    temp = ‘aaa’;      //Reference Error

    let temp;

}

因为在块级功用let
评释了三个局地变量,导致这么些变量绑定了那一个块级做呀用于,所以在let证明变量在此之前,对temp
赋值会报错。  (代码块内,使用let命令注脚变量在此之前,该变量都不可用)

~~~分割线~~~

在代码块内,使用let命令评释变量在此之前,该变量都以不可用的。那在语法上,称为“一时半刻性死区”(temporal
dead zone,简称 TDZ)

if(true){

// TDZ开始

tmp=’abc’; // ReferenceErrorconsole.log(tmp); // ReferenceError

let tmp; // TDZ结束console.log(tmp); //
undefinedtmp=123;console.log(tmp); // 123}


不允许再一次评释

let不一致目的在于同等的功效域内,重复申明同3个变量。

// 报错

functionfunc(){

        let a=10;

        var a=1;

}

// 报错

function func(){

        let a=10; 

        let a=1;

}

function func(arg) {

        let arg; // 报错

}

function func(arg) {

    {

        let arg; // 不报错

    }

}


  1.


const

扬言一个只读的常量。1旦表明,常量的值就无法更改。

const一旦注解就非得登时起始化,不能够留到今后赋值

与let相同的是:

        只在阐明所在的块级作用域内一蹴而就

        有一时死区(必须在注解之后才能应用)。

        const命令注解的常量也不可能提升。

        const评释的常量,不可重复注明。

var a = 99;            // 全局变量a
f();                   // f是函数,虽然定义在调用的后面,但是函数声明会提升到作用域的顶部。 
console.log(a);        // a=>99,  此时是全局变量的a
function f() {
  console.log(a);      // 当前的a变量是下面变量a声明提升后,默认值undefined
  var a = 10;
  console.log(a);      // a => 10
}

// 输出结果:
undefined
10
99

let变量是ES陆中新增的扬言变量的方法,它至关心注重要不外乎以下要点

  2.

一.仅在此时此刻块级成效域内有效

{ 
  var i = 9;
} 
console.log(i);  // 9

二.不存在变量进步

  3.

三.不允许再一次证明

{ 
  let i = 9;     // i变量只在 花括号内有效
} 
console.log(i);  // Uncaught ReferenceError: i is not defined

1、仅在脚下块级成效域内卓有成效

  计算:在ES6中起先用let来定义块级作用域变量,let未有变量的升级换代,用let注解的变量须要必须等let注明语句执行之后,该变量才能使用不然会报Uncaught
ReferenceError 错误,而且let变量无法开始展览重复表明。

var声明的变量在任何职责都足以访问到,而let注明变量的一大特征正是只有在脚下功能域内才能访问。上边是三个例子:

 

{  var a = 1;      

 

 let b = 2;

             

  {    var c = 3;    

console.log(b);——–>1 

 }  

console.log(c);              ——–>2

}

console.log(a);——–>3console.log(b);——–>4

地点的例子中,一可见平常调用变量b,而2会报错。那表明上层的功用域不能够访问内层let方法定义的变量,而内层能够访问外层let定义的变量。三方可健康运作,因为var证明的变量在哪儿都能够访问的到。比较之下四就会报错,因为在外围功能域内并不存在变量b,变量b仅在块级成效域中选拔let方法申明过。

2、不设有变量升高

var申明的变量,不论申明在任何任务,都能被访问到,那正是var的变量升高。而let注明的变量,只还好证明后调用,不然会报错。

console.log(a);——–>1

console.log(b);——–>2

var a = 10;

let b = 20;

 console.log(a);——–>3  

let a = 30;

}

上面的代码中,一常规调用,因为变量a是var评释的,存在变量进步。而2会报错,因为b是let注脚的,在宣称此前对其进展调用,会油不过生变量b还未定义的错误。

在一个块级成效域内,let申明的变量优先。由此在三中,尽管外部已经宣示了变量a,不过由于在这之中又用let表明了变量a,由其余部var评释的变量a在那么些职能域内无效。在那么些功能域中,又存在let变量的调用在申明在此以前,因而发生喝二壹如既往的荒谬。

三、不一样意再度注解

var表明的变量,借使再一次申明同三个变量,前边证明的变量值会覆盖前边注解的变量值。可是。let注明的变量分歧意被重新注解,不然会报错。

var a = 10;     

let b = 20;

let a = 30;        ——>3

let b = 40;        ——>4

上边的代码中,三和四会报相同的失实。因为三和肆选用let表明变量,并且在注脚let变量在此之前,相同的变量名都已经被var大概let证明过了,因而会产出重复表明变量的荒谬。

如上就是ES陆中let表明变量的首要性知识点。

                               
什么都懂一些,生活才多彩些。一起读书学知识吧~

4858美高梅 1

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有