前  言

JavaScript

 大家都知道声明一个变量时,通常会用'var'来声明,但是在ES6中,定义了另一个关键字'let'。今天我就为大家带来'var'与'let'这两个关键字声明有何异同。

1.1
未赋值声明

    <script type="text/javascript">
//试验代码
var a;
let b; console.log("这是var声明:"+a);
console.log("这是let声明:"+a);
</script>

结果:

  从上面的代码就可以看出,在声明变量时,不赋值情况下let和var是一样的,都显示为:undefined。

1.2重复声明一个变量

    <script type="text/javascript">
//试验代码
var a = 1;
var a = 2; console.log("这是var声明:"+a);
</script>

运行结果:

      

    <script type="text/javascript">
//试验代码
let a = 1;
let a = 2; console.log("这是var声明:"+a);
</script>
    <script type="text/javascript">
//试验代码
var a = 1;
let a = 2; console.log("这是var声明:"+a);
</script> 

运行结果:

     

  从上面的代码看出,当定义一个变量后,var和let都可以再次为定义的变量赋值。但是,使用var声明的变量,可以重复声明这个变量n次,而使用let声明的变量只能声明一次,而且,就算是var或其他的关键字声明后的变量,再使用let声明时,也会出错。

1.3函数作用域

    <script type="text/javascript">
//试验代码
var a = 1;
let b = 2;
c = 3;
!function(){
var a = 4;
let b = 5;
c = 6;
console.log("这是自执行函数var声明a:"+a);
console.log("这是自执行函数let声明b:"+b);
}(); console.log("这是var声明a:"+a);
console.log("这是let声明b:"+b);
console.log("这是全局变量c:"+c );
</script>

运行结果:

    

  从上面的代码和结果可以看出,var和let在函数作用域中的表现是一样的。函数中定义的变量只能在函数中调用,除非全局变量。

1.5块作用域

    <script type="text/javascript">
//试验代码
for(var i=0;i<5;i++){
console.log(i);
}
console.log(i);
</script>

运行结果:

    

    <script type="text/javascript">
//试验代码
for(let i=0;i<5;i++){
console.log(i);
}
console.log(i);
</script>

运行结果:

    

    <script type="text/javascript">
//试验代码
let c = 3;
console.log('函数外let定义c:' + c);
!function(){
let c = 6;
console.log('函数内let定义c:' + c);
}();
console.log('函数调用后let定义c不受函数内部定义影响:' + c);
</script>

运行结果:

    

  从上面的代码看出,在for循环中使用var声明的变量,在循环结束后可以放在循环外输出,而使用let声明的,在循环外是不能调用,提示错误。上面提到过let声明的变量,不可以重复声明,但是在let的块作用域下,let可以再次声明这个变量,但在函数声明的变量,只能在函数中使用,也就是说用let声明的两个变量,是两个不同的变量。这也是let与var最大的区别。

最新文章

  1. 基于STSdb和fastJson的磁盘/内存缓存
  2. drawer principle in Combinatorics
  3. poj 2947 Widget Factory
  4. 更改Sublimetext3的主题文件,改变某些不喜欢的颜色
  5. OpenCV——识别手写体数字
  6. 使用PHP从web访问mysql数据库
  7. lua实现多继承
  8. 从头开始建网站(三)DNS
  9. 讲故事的人写的谈判手册——Leo锦书64
  10. openGL线s的绘制
  11. C基于客户端的通信实例
  12. Pangolin的使用
  13. Java语言编程注意事项
  14. code forces 436 D. Make a Permutation!
  15. css table之合并单元格
  16. SSH 远程登陆
  17. bzoj2086: [Poi2010]Blocks DP,单调栈
  18. vue 中安装使用sass 报错遇到的问题整理
  19. Visual Studio 监视与快速监视即时窗口没有智能提示
  20. Spring Data JPA使用keywords关键字实现CAST函数

热门文章

  1. bootstrap 基础(一)
  2. diplay:table-cell和伪元素:after方法让图片居中
  3. 遇到的一些Jquery函数
  4. 串口数据缓存java版
  5. 个人作业3——个人总结(Alpha阶段)
  6. Java课程设计——博客作业教学数据分析系统(201521123091 李嘉廉)
  7. 201521123005 《java程序设计》 第六周学习总结
  8. 201521123006 《Java程序设计》第5周学习总结
  9. 201521123062《Java程序设计》第4周学习总结
  10. 201521123036 《Java程序设计》第3周学习总结