const、let、var的主要区别
接触ES6之后,以前定义变量的方式由var增加了let、const,平时看别人用也不知道如何区别具体差别,好好科普了一下记录下来,方便大家一起学习。
var(大家最熟悉的定义方式)
1、可定义全局作用域
2、定义内容可以修改
3、定义的变量不初始化会输出undefined
var a = 1
function test() {
a = 3
}
test()
console.log(a) //a的值为3
7 var b
8 console.log(b) //如果b不赋值则输出undefined
let(新增的块级作用域)
1、函数内定义,函数外无法使用
2、和var一样,定义的变量不初始化会输出undefined
function test () {
for (let i=1;i<3;i++) { // 可以把每一个{}包着的区域理解为当前作用域,let只在其内部生效
console.log(i) // 输出1、2
}
console.log(i) // Uncaught ReferenceError: i is not defined
}
test()
let z
console.log(z) //undefined
const(主要用于申明常量,常量无法修改)
1、主要用于申明常量,无法被修改
2、const定义的常量必须初始化
3、但是const如果定义为一个对象,这个对象是可以修改的
function test () {
const a = 6
a = 8
console.log("a:" + a) // 报错 Assignment to constant variable.
}
test()
// 用const定义一个对象
const k = {
a: 3
}
k.b = 6
console.log(k) // {a: 3, b: 6}
const c
console.log(c) // 报错
如有错误,请您指正!
const、let、var的主要区别的更多相关文章
- JavaScript中const、var和let区别浅析
在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...
- JS中const、var 和let的区别
今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...
- js中三种定义变量 const, var, let 的区别
js中三种定义变量的方式const, var, let的区别 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 ...
- 关于ES6的let,const与var之间的三生三世
首先需要明确的是let.const.var都是用来定义变量的 在ES6之前,我们一般都用var来定义变量,例如 : function test(){ var i=1; console.log(i); ...
- delphi中move函数的正确理解(const和var一样,都是传地址,所以Move是传地址,而恰恰不是传值)太精彩了 good
我们能看到以下代码var pSource,pDest:PChar; len: integer;.......................//一些代码Move(pSource,pDest,l ...
- ES6中let、const和var的区别
一.let 1.基本用法 ES6 新增了let命令,用来声明变量. let 的用法类似于 var,但所声明的变量只在 let 命令所在的代码块内有效(一个“{}”相当于一个代码块) { let a = ...
- 浅谈ES6——ES6中let、const、var三者的区别
在了解let.const.var的区别之前,先了解一些什么是es6 Es6 全称ECMAscript 是JavaScript语言的一个标准,其实Es6本质就是JavaScript的一个版本,为什么叫E ...
- let、const、var区别?
let.const.var区别? let和const不存在变量提升(没有预解析,var有预解析). let和const在同一作用域范围内不能重复定义变量.(var可以). let和const有严格的作 ...
- let 和const与var的不同
1. let的作用域在代码块中仅限在当前的作用于中 { var str1 = 12; console.log(str1); let str2 = 20; console.log(str2); //20 ...
随机推荐
- 洛谷P3952 时间复杂度(模拟)
题意 题目链接 Sol 咕了一年的题解..就是个模拟吧 考场上写的递归也是醉了... 感觉一年自己进步了不少啊..面向数据编程的能力提高了不少 #include<bits/stdc++.h> ...
- js中常见面试问题-笔记
原文参考https://mp.weixin.qq.com/s/mCVL6qI33XeTg4YGIKt-JQ 1.事件代理给父元素添加事件,利用事件冒泡原理,在根据e.target来获取子元素<u ...
- 聚合maven+spring-boot打包可执行jar
整整搞了一天,终于解决这个问题了.这里是四个module,module之间存在依赖,打包两个可执行jar,看下最终效果吧 聚合maven+spring-boot的搭建很简单,和普通的聚合maven没有 ...
- sqlserver查询当月数据
SELECT * FROM table WHERE datediff(month,LoginTime,getdate())=0 ORDER BY LoginTime SELECT * FROM tab ...
- js下拉框去掉重复的
想用jquery代码实现这样的一个功能:有一个下拉框,当选择下拉框的时候,判断选择的值有没有被选择过,如果有则提示:代码如下: $(function(){ var authTypes=new Arra ...
- c++ inline 的位置不当导致的 无法解析的外部符号
这几天编写代码碰到 无法解析的外部符号 visual studio. 在类中 inline 修饰符应该放在类函数定义的时候而不是声明的地方 即 // test.h 头文件 class A { publ ...
- 在 Linux 中使用 Azure Premium 存储的基本优化指南
Note 以下测试和结果都是基于 CentOS 6.5.对于其他版本,请参考本文档,并自行进行相关测试. 建议使用最新的内核版本 一般情况下,新的内核版本能解决老版本中存在的问题,添加对新出现硬件的支 ...
- Python学习---Python下[列表]的学习
列表[list]用中括号[]表示,处理一组有序项目的数据结构,列表的类型是可变的数据类型,类型是list 列表是可变/线程不安全的 # type(a) = list 利用type判断元素离线 # 切 ...
- flashback回收站知识汇总
查看回收站是否开启:SELECT Value FROM V$parameter WHERE Name = 'recyclebin'; 查看回收站中的数据:SELECT * FROM DBA_RECYC ...
- July 05th 2017 Week 27th Wednesday
No man can make a good coat with bad cloth. 巧妇难为无米之炊. One can't make bricks without straw. There is ...