ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

声明后未赋值,表现相同

(function() {var varTest;let letTest;console.log(varTest); //输出undefinedconsole.log(letTest); //输出undefined}());

使用未声明的变量,表现不同:

(function() {console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)console.log(letTest); //直接报错:ReferenceError: letTest is not defined
var varTest = 'test var OK.';let letTest = 'test let OK.';
}());

重复声明同一个变量时,表现不同:

(function() {"use strict";var varTest = 'test var OK.';let letTest = 'test let OK.';var varTest = 'varTest changed.';let letTest = 'letTest changed.'; //直接报错:SyntaxError: Identifier 'letTest' has already been declared
console.log(varTest); //输出varTest changed.(注意要注释掉上面letTest变量的重复声明才能运行)
      console.log(letTest);}());

变量作用范围,表现不同:

(function() {var varTest = 'test var OK.';let letTest = 'test let OK.';{var varTest = 'varTest changed.';let letTest = 'letTest changed.';}console.log(varTest); //输出"varTest changed.",内部"{}"中声明的varTest变量覆盖外部的letTest声明console.log(letTest); //输出"test let OK.",内部"{}"中声明的letTest和外部的letTest不是同一个变量
}());

备注:

使用 let 语句声明一个变量,该变量的范围限于声明它的块中。  可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值。

使用 let 声明的变量,在声明前无法使用,否则将会导致错误。

如果未在 let 语句中初始化您的变量,则将自动为其分配 JavaScript 值 undefined

ES6新增let和const两个变量声明命令,他们都具有如下特性:
1、块局作用域;
2、不存在变量提升,一定声明后才能使用;
3、暂时性死区,在代码块内使用let命令声明变量之前,该变量都是不可用的,不受外部变量影响;
4、在相同作用域范围内不允许重复声明;
const与let不同点在于:
const声明的变量不能重新赋值 ,也是由于这个规则, const变量声明时必须初始化 ,不能留到以后赋值

let和var定义变量的区别相关推荐

  1. css里面的let,js中let和var定义变量的区别

    javascript 严格模式 第一次接触let关键字,有一个要非常非常要注意的概念就是"javascript 严格模式",比如下述的代码运行就会报错: let hello = ' ...

  2. js中let和var定义变量的区别

    let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781671 声明后未赋值,表现相同 (fun ...

  3. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  4. mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  5. java val变量声明_Kotlin 中 var 与 val 定义变量的区别,及使用场景

    看 Kotlin 项目示例代码中,经常出现 var / val 定义变量的情况.于是查了一下两者的区别: var 定义的变量可以被再次赋值.var 是 variable 的缩写. val 定义的变量不 ...

  6. 表变量是什么_DAX学习:使用VAR定义变量

    前面介绍如何使用DAX生成日期表的时候,使用了VAR,有人留言问这个VAR怎么理解,那么这篇文章就来介绍VAR以及它的用法. VAR是VARIABLE的缩写,意思为变量,任何一个编程语言中,变量都是一 ...

  7. PL/SQL中,declare定义变量和variable定义变量的区别?

    用declare声明的变量作用在block中. variable是sqlplus中定义变量的命令.他定义的变量在一个sqlplus连接中有效. SQL> show user USER 为&quo ...

  8. 循环外和循环内定义变量的区别

    一.代码展示 import java.util.HashMap; import java.util.Map;/*** @Package: raymond* @ClassName: Test* @Aut ...

  9. html页面使用var变量,使用var定义变量和不使用var的本质区别

    最基本的var关键字是上下文的,而不采用var是全局的这就不讨论了 "不管是使用var关键字(在全局上下文)还是不使用var关键字(在任何地方),都可以声明一个变量".这貌似一个错 ...

最新文章

  1. 牛人博客!!!各大招聘网站信息实时查询浏览【转】
  2. 美陆军将在2020年军演中测试人工智能新应用
  3. 传智播客C/C++各种开发环境搭建视频工具文档免费教程
  4. intellij_我最喜欢的IntelliJ IDEA功能
  5. android 应用间共享数据,调用其他app数据资源
  6. 编制一个c语言成绩记录簿_C语言学到什么程度能写推箱子
  7. Kaggle Kernels和 Colab, Binder, Azure Notebooks, CoCalc, Datalore的比较
  8. gradle 转 maven
  9. 【文献阅读】Perceptual Generative Adversarial Networks for Small Object Detection –CVPR-2017
  10. 《FLUENT 14.0超级学习手册》—— 导读
  11. navicat激活已过期
  12. 大数据产品价值主张_大数据对商业模式创新的影响
  13. OpenSSL Cipher 加密解密 Ruby on Rails
  14. Pandas常见筛选数据的五种方法其一逻辑筛选。看见必懂,懂者必会,会者必加分
  15. TCP IP协议之初识
  16. Python进阶(十八)Python3爬虫小试牛刀
  17. 父类声明子类实例化对象详解
  18. int 长度 mysql_MySQL int 类型的长度和范围解惑
  19. NCX数据库导入导出
  20. 以下内容仅对你可见个性签名_微信个性签名居中以下内容仅对你可见

热门文章

  1. php环境配置+sublime编译环境配置
  2. 2020年中国食品包装行业发展现状分析,行业智能化、自动化、多元化发展「图」
  3. java类库geotools_GeoTools和JTS之间的关系
  4. ArcGis系列-坐标系转换
  5. 16.实时绘制加速技术
  6. k8s k3s云容器性能测试-边端云端性能测试
  7. Eclipse 彻底卸载
  8. Day042 意志力真好用
  9. 浅谈数据开发神器——数栈离线开发平台(BatchWorks)
  10. 测试真的是一个无聊又没前途的岗位吗?