2-新的变量声明方式(var ,let,const)

以前我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种声明方式了。

字面理解ES6的三种声明方式:

  1. var:它是variable的简写,可以理解成变量的意思。
  2. let:它在英文中是“让”的意思,也可以理解为一种声明的意思。
  3. const:它在英文中也是常量的意思,在ES6也是用来声明常量的,常量你可以简单理解为不变的量

    --var声明----
  4. var在ES6里是用来升级全局变量的,我们可以先作一个最简单的实例,用var声明一个变量a,然后用console.log进行输出。

    var a=‘小麦xiaomai‘;
    console.log(a);

在控制台可以打印出来var a 变量的值,但是问题来了,到底怎么理解全局变量或全局变量的污染呢?

然后在匿名函数中调用这个a变量,看看能不能调用到。

var a="小麦";
window.onload= function(){
    console.log(a);
}

可以看到控制台输出了小麦,这证明var确实是全局的。如果你觉的这个不够直观说明var是全局声明,还可以用区块的方式进行调用测试,先看下面的代码

var a=2;
{
   var a=3;
}
console.log(a);

这时打印出来的值是多少那?对,应该是3,因为var是全局声明的。第二次的var声明的变量已经覆盖掉了第一次声明的var 变量的值。

** let局部声明 **

通过两个简单的例子,我们对var的全局声明有了一定了解。那跟var向对应的是let,它是局部变量声明。还是上面的例子,我们试着在区块里用let声明。

var a=2;
{
   let a=3;
}
console.log(a);

这时候控制台打印出来的值就是2了。获取不作用域里面的变量。如果我们只在区块里声明,不再外部声明,我们打印a时就会报错,显示找不到变量

{
   let a=3;
}
console.log(a);

上面两个例子说明了let是局部变量声明,let声明只在区块内起作用,外部是不可以调用的。

有些刚接触JavaScript的小伙伴会疑惑了,我感觉let还没有var好用,其实let是防止你的数据污染的,在大型项目中是非常有用处的。现在看一个循环的例子,我们来看一下let的好处。

for(let i=0;i<10;i++){
console.log(‘循环体中:‘+i);
}
console.log(‘循环体外:‘+i);

你执行时会发现控制台报错了,找不到循环体外的i变量。通过两种声明的比较,可以明白let在防止程序数据污染上还是很有用处的。我们要努力去习惯用let声明,减少var声明去污染全局空间,在vue的使用中也要注意这点。

** const声明常量**

在程序开发中,有些变量是希望声明后在业务层就不再发生变化了,简单来说就是从声明开始,这个变量始终不变,就需要用const进行声明。

我们来一段用const声明错误的代码,在错误中学习const的特性也是非常好的

const a="JSPang";
var a=‘小麦‘;
console.log(a);

在编译这段代码的过程中,你就会发现已经报错,无法编译了,原因就是我们const声明的变量是不可以改变的。const是很好理解的,我就不作过多的解释说明了。

这节课我们学了ES6的3种声明方式,var、let、const,这三种方式各有所长,既然已经学习了新技术,我们就要拥抱它,试着在你的项目中根据情况用let和const进行声明吧,不要再只使用var了。

-----------------

那么简单的组件一下 var let const三个的区别:

var声明变量可以重复声明,而let不可以重复声明

  var是不受限于块级的,而let是受限于块级

  var会与window相映射(会挂一个属性),而let不与window相映射

  var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错

  const声明之后必须赋值,否则会报错

  const定义不可变的量,改变了就会报错

  const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错,

原文地址:https://www.cnblogs.com/mahmud/p/11563422.html

时间: 2024-08-05 21:06:19

2-新的变量声明方式(var ,let,const)的相关文章

关于ECMAScript6 的学习01-ES6 的六种变量声明方式===关于常量const

const 变量声明常量   在声明const 时,必须初始化   否则会出错 const 变量与let 变量类似 作用域同样在{} 的范围内. 也不可以在同一作用域内声明两个同名 const 变量 const  实质上是使变量指向的内存地址不变,而不是使变量不能改变,对于像是一些字符型,数值型,布尔型的数据来讲,变量所指向的内存地址即是 变量的值. 但对于复合类型来讲 (主要是对象和数组)指向的内存地址保存的是指针,const只能保证指针不发生变化 ,但对于指针所指向的数据结构的变化它并不能控

JavaScript中变量声明有var和没var的区别

本文来论述JavaScript中变量声明有var和没var的区别,关于Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是 (function(){ ... })(): 在函数内部,有var和没var声明的变量是不一样的.有var声明的是局部变量,没var的,声明的全局变量. 在全局作用域内声明变量时,有var 和没var看起来都一样,我们知道,声明的全局变量,就是window的属性,究竟是否一样,我们通过ECMAScrpit5提供的属性的特性查询方法,来发现之间的区

变量声明关键字var ,let,const

今天带大家了解的是比较有趣的几个变量声明关键字var,let,const. 我们在最初接触JS的时候,变量是我们重要的一个组成部分,在使用时规定必须要先进行声明,否则网页将会报错: console.log(b); //b is not defined ,表示我们并没有对变量进行声明,却要调用变量b,这时网页报错b未被定义,这时我们又了解到了声明关键字var的存在,利用声明关键字对变量进行声明: var a; console.log(a); //undefined,a未被赋值所以为undefine

javascript 变量声明有var与无var 的区别

1.在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量.使用var定义var a = 'hello World';function bb(){var a = 'hello Bill';console.log(a); }bb() // 'hello Bill'console.log(a); // 'hello world' 不使用var定义var e = 'hello world';function cc(){e = 'hello Bill';console.log(e)

关于变量声明的var,let,const

在js中,用var声明的话,在同一个作用域的范围内会存在声明提前的情况,举个例子: 按常理来说,我们此时需要的b应该输出的是 not defined 才对,但是实际上并没有,因为var b在判断之前已经声明了,在判断之后只是进行了赋值的操作而已. 用var声明在同一个作用域内是可以进行重复声明,浏览器并不会报错: 但是用let和const声明变量的话,在同一个作用域内是不允许重复声明,重复声明会告诉你该变量已经存在了, 必须是先定义再使用,不存在声明t提前这回事:         有着严格的作用

第四章 变量声明

变量声明 一.let 和 const let 和 const 是 JavaScript 里相对较新的变量声明方式. let 在很多方面与 var 是相似的,但是可以帮助大家避免在 JavaScript 里常见一些问题(如作用域提升). const 是对 let 的一个增强,它能阻止对一个变量再次赋值. 因为 TypeScript 是 JavaScript 的超集,所以它本身就支持 let 和 const. 推荐使用它们来代替 var. 使用最小特权原则,所有变量除了你计划去修改的都应该使用 co

ES6的强大变量声明

ES6是javascript的新特性,今天来说说声明变量 过去我们声明变量,都是一个一个声明,现在有了一种新的声明方式,它可以将一个多个变量同时声明,声明后变量同时存在一个集合中,集合的数据类型是对象(object).使用这种声明方式,可以使我们书写程序的过程中思路更加清晰,可以将同一事件下的所有变量集合起来,可以将相同意义的变量集合起来. 这样的变量声明方式叫做“模式匹配” 之所以叫做模式匹配,是因为等号两边的模式是一样的 var a = 1; var b = 2; var c = 3; 这是

TypeScript的变量声明

1.全新的变量声明方式 let和const是JavaScript ES6中新添加的变量声明方式.let在很多方面与var是相似的,但是它可以避免一些在JavaScript里常见一些问题. 而const则是对let的一个增强,它将阻止对一个变量再次赋值(二次赋值). 因为TypeScript是JavaScript的超集,所以它本身就支持let和const. ⒉var声明 原文地址:https://www.cnblogs.com/fanqisoft/p/11828839.html

ES6的变量声明

在ES5中,变量声明只有var和function以及隐式声明三种,在ES6中则增加了let,const,import和class四种,以下来介绍着七种变量的声明. var ES5中最原始的变量声明,用于声明变量,其实JavaScript是弱类型语言,对数据类型变量要求不太严格,所以不必声明每一个变量的类型(这就是下面说的隐式声明,当然这并不是一个好习惯),在使用变量之前先进行声明是一种好的习惯. 1.作用域 使用var声明的变量的作用域是函数作用域(在ES5时代,只有函数作用域和全局作用域两种作