了解javascript中let和var及const关键字的区别


Posted in Javascript onMay 24, 2019

1.声明后未赋值,表现相同

//一个例子
'use strict';

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

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

//一个例子
(function() {
 console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)
 console.log(letTest); //直接报错:ReferenceError: letTest is not defined

 var varTest = 'test var OK.';
 let letTest = 'test let OK.';
}());

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

//一个例子
'use strict';
(function() {
 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);
}());

4.变量作用范围,表现不同

//一个例子
'use strict';
(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不是同一个变量
}());

5.const定义的变量不可以修改,而且必须初始化

//一个例子
const b = 2;//正确
// const b;//错误,必须初始化 
console.log('函数外const定义b:' + b);//有输出值
// b = 5;
// console.log('函数外修改const定义b:' + b);//无法输出

6.var定义的变量可以修改,如果不初始化会输出undefined,不会报错

var a = 1;
// var a;//不会报错
console.log('函数外var定义a:' + a);//可以输出a=1
function change(){
a = 4;
console.log('函数内var定义a:' + a);//可以输出a=4
} 
change();
console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4

7.let是块级作用域,函数内部使用let定义后,对函数外部无影响

let c = 3;
console.log('函数外let定义c:' + c);//输出c=3
function change(){
let c = 6;
console.log('函数内let定义c:' + c);//输出c=6
} 
change();
console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3

学习到此结束!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
use jscript Create a SQL Server database
Jun 16 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
Jan 23 Javascript
JS将光标聚焦在文本最后的实现代码
Mar 28 Javascript
jQuery控制Div拖拽效果完整实例分析
Apr 15 Javascript
jQuery中 prop() attr()使用详解
May 19 Javascript
JavaScript实现强制重定向至HTTPS页面
Jun 10 Javascript
js实现的奥运倒计时时钟效果代码
Dec 09 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 Javascript
nuxt+axios解决前后端分离SSR的示例代码
Oct 24 Javascript
Vue父组件如何获取子组件中的变量
Jul 24 Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 Javascript
javascript遍历对象的五种方式实例代码
Oct 24 Javascript
如何用原生js写一个弹窗消息提醒插件
May 24 #Javascript
小程序登录/注册页面设计的实现代码
May 24 #Javascript
微信小程序+云开发实现欢迎登录注册
May 24 #Javascript
30分钟用Node.js构建一个API服务器的步骤详解
May 24 #Javascript
Electron-vue开发的客户端支付收款工具的实现
May 24 #Javascript
JS实现判断数组是否包含某个元素示例
May 24 #Javascript
JS实现查找数组中对象的属性值是否存在示例
May 24 #Javascript
You might like
DC动漫人物排行
2020/03/03 欧美动漫
PHP4实际应用经验篇(1)
2006/10/09 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
javascript验证身份证号
2015/03/03 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
浅谈vue的踩坑路
2017/08/31 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
在Python中处理XML的教程
2015/04/29 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
简单了解如何封装自己的Python包
2020/07/08 Python
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
北大青鸟学生求职信
2013/09/24 职场文书
高级技校毕业生自荐信
2013/11/18 职场文书
家长评语大全
2014/01/22 职场文书
化学教学随笔感言
2014/02/19 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
飞越疯人院观后感
2015/06/09 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL