前言:

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

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

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

var声明:

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

var a='rong';
console.log(a);  //rong

我们可以看到rong在控制台已经被打印出来了。那如何理解它的作用是声明全局变量那?我们用匿名函数给他进行一个包裹,然后在匿名函数中调用这个a变量,看看能不能调用到。

var a="rong";
window.onload= function(){
console.log(a);  //rong
}

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

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

这时打印出来的值是多少那?对,应该是3,因为var是全局声明的。

** let局部声明 **

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

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

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

{
let a=3;
}
console.log(a);  //a is not defined

上面两个例子说明了let是局部变量声明,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="rong";
var a='蓉';
console.log(a);

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

-----总结---------------------------------------------------------------------------------------------------------------------------------------------------

1. var 跟 let 上面的变量是可以重复声明并且可以重复定义

2.  var 在函数内声明,只能在函数作用域中使用(假设在if语句中声明,var还是属于全局的)

3.  let 跟 const  是块级作用域中声明的,{ }

4. const 声明的变量是不能修改的,但是变量的属性是能够重新赋值的,假设连属性也不许给他修改,那会用到es5中的方法

const wangrong = {
name:'wr',
age:'26'
}
const wangrong = Object.freeze(person);

  

 

最新文章

  1. C++中的显式类型转化
  2. redis 配置
  3. oracle系列--第六篇 Oracle上面小试牛刀
  4. css style与class之间的区别,cssclass
  5. ubuntu设置服务开机启动
  6. java写入文件的几种方法小结
  7. clion&#160;帮助文档&#160;EN
  8. python 基于小顶堆实现随机抽样
  9. 如何开发原生的 JavaScript 插件(知识点+写法)
  10. BZOJ1715: [Usaco2006 Dec]Wormholes 虫洞
  11. HDU 5059 Help him(细节)
  12. HAProxy与varnish
  13. python中字符串和列表只是汇总
  14. IDEA配置github并上传项目
  15. Cocos2dx制作帧动画
  16. 学习html/css基础的重点笔记
  17. grafana安装
  18. MongoDB学习之(二)java连接
  19. [spring] 对实体 &quot;characterEncoding&quot; 的引用必须以 &#39;;&#39; 分隔符结尾
  20. DOM学习日记1

热门文章

  1. debian 源设置 ( apt-get 不能安装)
  2. HDFS API 操作实例(二) 目录操作
  3. sklearn中模型评估和预测
  4. 【Latex】一些使用
  5. FlyMcu下载时的问题
  6. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets
  7. fping简介及使用方法
  8. shell 命令 修改文件权限 chmod
  9. Mysql ---部署,创建用户
  10. Let&#39;s Encryt免费SSL证书申请[我司方案]