let和var定义变量的区别
ES6新增了let
命令,用来声明变量。它的用法类似于var
,但是所声明的变量,只在let
命令所在的代码块内有效。
声明后未赋值,表现相同
![](/assets/blank.gif)
(function() {var varTest;let letTest;console.log(varTest); //输出undefinedconsole.log(letTest); //输出undefined}());
![](/assets/blank.gif)
使用未声明的变量,表现不同:
![](/assets/blank.gif)
(function() {console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)console.log(letTest); //直接报错:ReferenceError: letTest is not defined var varTest = 'test var OK.';let letTest = 'test let OK.'; }());
![](/assets/blank.gif)
重复声明同一个变量时,表现不同:
![](/assets/blank.gif)
(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);}());
![](/assets/blank.gif)
变量作用范围,表现不同:
![](/assets/blank.gif)
(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不是同一个变量 }());
![](/assets/blank.gif)
备注:
使用 let 语句声明一个变量,该变量的范围限于声明它的块中。 可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值。
使用 let 声明的变量,在声明前无法使用,否则将会导致错误。
如果未在 let 语句中初始化您的变量,则将自动为其分配 JavaScript 值 undefined。
1、块局作用域;
2、不存在变量提升,一定声明后才能使用;
3、暂时性死区,在代码块内使用let命令声明变量之前,该变量都是不可用的,不受外部变量影响;
4、在相同作用域范围内不允许重复声明;
const与let不同点在于:
const声明的变量不能重新赋值 ,也是由于这个规则, const变量声明时必须初始化 ,不能留到以后赋值
let和var定义变量的区别相关推荐
- css里面的let,js中let和var定义变量的区别
javascript 严格模式 第一次接触let关键字,有一个要非常非常要注意的概念就是"javascript 严格模式",比如下述的代码运行就会报错: let hello = ' ...
- js中let和var定义变量的区别
let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781671 声明后未赋值,表现相同 (fun ...
- mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- java val变量声明_Kotlin 中 var 与 val 定义变量的区别,及使用场景
看 Kotlin 项目示例代码中,经常出现 var / val 定义变量的情况.于是查了一下两者的区别: var 定义的变量可以被再次赋值.var 是 variable 的缩写. val 定义的变量不 ...
- 表变量是什么_DAX学习:使用VAR定义变量
前面介绍如何使用DAX生成日期表的时候,使用了VAR,有人留言问这个VAR怎么理解,那么这篇文章就来介绍VAR以及它的用法. VAR是VARIABLE的缩写,意思为变量,任何一个编程语言中,变量都是一 ...
- PL/SQL中,declare定义变量和variable定义变量的区别?
用declare声明的变量作用在block中. variable是sqlplus中定义变量的命令.他定义的变量在一个sqlplus连接中有效. SQL> show user USER 为&quo ...
- 循环外和循环内定义变量的区别
一.代码展示 import java.util.HashMap; import java.util.Map;/*** @Package: raymond* @ClassName: Test* @Aut ...
- html页面使用var变量,使用var定义变量和不使用var的本质区别
最基本的var关键字是上下文的,而不采用var是全局的这就不讨论了 "不管是使用var关键字(在全局上下文)还是不使用var关键字(在任何地方),都可以声明一个变量".这貌似一个错 ...
最新文章
- 牛人博客!!!各大招聘网站信息实时查询浏览【转】
- 美陆军将在2020年军演中测试人工智能新应用
- 传智播客C/C++各种开发环境搭建视频工具文档免费教程
- intellij_我最喜欢的IntelliJ IDEA功能
- android 应用间共享数据,调用其他app数据资源
- 编制一个c语言成绩记录簿_C语言学到什么程度能写推箱子
- Kaggle Kernels和 Colab, Binder, Azure Notebooks, CoCalc, Datalore的比较
- gradle 转 maven
- 【文献阅读】Perceptual Generative Adversarial Networks for Small Object Detection –CVPR-2017
- 《FLUENT 14.0超级学习手册》—— 导读
- navicat激活已过期
- 大数据产品价值主张_大数据对商业模式创新的影响
- OpenSSL Cipher 加密解密 Ruby on Rails
- Pandas常见筛选数据的五种方法其一逻辑筛选。看见必懂,懂者必会,会者必加分
- TCP IP协议之初识
- Python进阶(十八)Python3爬虫小试牛刀
- 父类声明子类实例化对象详解
- int 长度 mysql_MySQL int 类型的长度和范围解惑
- NCX数据库导入导出
- 以下内容仅对你可见个性签名_微信个性签名居中以下内容仅对你可见