var与let与const都是用来声明变量,但是三者之间也有一些区别
var的使用
var a;//声明变量a
var a,b,c;//声明三个变量a,b,c
var a,b,c=2;//声明了三个变量只有c的值为2,
console.log(a,b,c)//undefined undefined 2

var 可以重复声明(不建议)

    var 可以同时声明多个变量,也可以同时赋值
var a=1;
!function () {
    console.log(a)//1
}()
    函数内部未声明变量,那么用外面的全局变量
var a=1;
!function () {
    var a=2;
    console.log(a)//2
}()
如果内部外部都声明了,那么用内部的
下面的小案例有点意思了,注意看:
var a=1;
!function () {
    console.log(a)//a的值为undefined
    var a=2;
}()
这里要注意一下,函数内后面的var a=2;实际上是两步,var a; a=2;我们传统js里只有两个作用域,全局作用域跟内部作用域,在上述代码中,变量a在函数内部被声明了,那么这个a就等于undefined,我们可以理解为这样:
var a=1;
!function () {
    var a;//undefined
    console.log(a)
    a=2;
}()
这里涉及到JavaScript中的两个概念:
            暂时性死区:函数中声明了变量a,那么对于变量a来讲,该作用域锁死,将不能从外界获得a的值
            变量提升:在同一个作用域下,变量a被声明了,那么该作用域上上下下到处都有了a,也就是说你在后面声明的变量,在前面也可以用,不一定非要是前面声明后面使用(强烈建议先声明后使用,不建议先使用后声明,我们的JavaScript是被大神在10天的时间内设计出来的,所以有一些缺陷,后续的let会逐渐改掉)。
 
 
let的使用
    必须先声明后使用
let a=1;
console.log(a)//1
先使用,后声明,对不起,报错了
console.log(b)
let b=2;
函数内也一样,
let a=1
!function () {
     let a=2;
     console.log(a)//2
}()
可行,但是let不存在变量提升
let a=1
!function () {
     console.log(a)//2
     let a=2;
}()
报错:首先由于在函数内声明了a,那么在函数内作用域就不会去获取外面的a值,同时由于函数内我们console.log的时候,还没声明a,所以报错,let不存在变量提升,必须先声明后使用
 
const的使用
const很多人认为它是用来声明常量,但是这里说的常量跟我们js里真正的常量是不一样的,我们js中认为的常量是指数字、字符串等不可被修改的量,比如1就是1,它不是2,怎么也不能是2,这是常量,我们现在认为const声明的是常量其实是不准确的。
const声明的量就是变量,跟let或var声明的变量没啥大区别,唯一的区别就在于,const声明的变量不可以被修改,比如:
const a=1;
a=2;
console.log(a)
报错
但是const也不是一定不可被修改,比如:
const a={name:'xiaoming',id:'1'}
console.log(a)
a.name='xiaohong'
a.id=2
console.log(a)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

var与let与const的更多相关文章

  1. 认识 var、let、const

    我们通过声明.初始化.值的可变性.作用域.变量提升以及在工作中如何使用等多个方面来详细了解var.let.const等关键字功能与特点. 声明 var,let:可以先声明,后赋值(初始化),默认值是 ...

  2. js中var,let,const理解

    var变量提升: 解释:在声明a之前输出a,因为a是使用var声明变量得到提升,解释为下句 var a: console.log(a) a = 1; var声明会提到最上面的位置,但是赋值的位置还是当 ...

  3. var与let、const的区别

    var与let.const 一.var声明的变量会挂载在window上,而let和const声明的变量不会: var a = 100;console.log(a,window.a); // 100 1 ...

  4. 5分钟掌握var,let和const异同

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://dzone.com/articles/javascript-difference-b ...

  5. JS中的块级作用域,var、let、const三者的区别

    1. 块作用域{ } <script type="text/javascript"> { var a = 1; console.log(a); // 1 } conso ...

  6. JavaScript中var、let和const的区别(转载)

    一.前言 在ES6(ES2015)出现之前,JavaScript中声明变量就只有通过 var 关键字,函数声明是通过 function 关键字,而在ES6之后,声明的方式有 var . let . c ...

  7. javascript中var、let和const的区别

    在javascript中,var.let和const都可以用来声明变量,那么三者有什么区别呢?要回答这个问题,我们可以从先想想:三种不同的声明会影响变量的哪些方面?这些方面也就是变量的特性,那么变量有 ...

  8. JS中var、let、const区别? 用3句话概括

    使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象: 使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升: 使用const声明的是常量,在后面出现的代码中不能再修 ...

  9. 关于var、let、const的故事

    对于一门编程语言来说,变量与常量是再正常不过的两种,JavaScript是一直解释型的弱类型语言. JavaScript中变量或者常量可以用var.let.const(后两者是ES6的新特性). 1. ...

  10. javasript中var、let和const区别

    let和const都是es5,es6新版本的js语言规范出来的定义,在这以前定义一个变量只能用var.let和const都是为了弥补var的一些缺陷而新设计出来的. 简单来说是: let是修复了var ...

随机推荐

  1. 3. SOFAJRaft源码分析— 是如何进行选举的?

    开篇 在上一篇文章当中,我们讲解了NodeImpl在init方法里面会初始化话的动作,选举也是在这个方法里面进行的,这篇文章来从这个方法里详细讲一下选举的过程. 由于我这里介绍的是如何实现的,所以请大 ...

  2. 星云测试插装编译流程与CI集成

    星云测试Horn插装采用脚本配置方式自动对语法进行扫描和插装,在整个插装过程中需要用到星云提供的插件工具.通过与CI集成,在CI编译前通过jenkins调用星云插装插件模块进行必要的数据填充,生成对应 ...

  3. Mysql UTF-8mb4字符集的问题

    官方Mysql手册链接 https://dev.mysql.com/doc/connectors/en/connector-j-reference-charsets.html Notes For Co ...

  4. windows下Eclipse远程连接linux hadoop远程调试 经验(一)

    环境 Windows 7 64bit JDK 1.6.0_45  (i586) JDK 1.7.0_51  (i586) Eclipse Kepler Eclipse -plugin-1.2.1.ja ...

  5. 设计模式(十二)Decorator模式

    Decorator模式就是不断地为对象添加装饰的设计模式.以蛋糕为例,程序中的对象就相当于蛋糕,然后像不断地装饰蛋糕一样地不断地对其增加功能,它就变成了使用目的更加明确的对象. 首先看示例程序的类图. ...

  6. Redis(十二)flush误操作、Redis安全、处理bigkey和寻找热点key

    一.flushall/flushdb误操作的处理 假设进行flush操作的Redis是一对主从结构的主节点,其中键值对的个数是100万,每秒写入量是1000. 1.缓存与存储 被误操作flush后,根 ...

  7. ubuntu19.10桌面版

    一:安装ubuntu卡住,英伟达显卡兼容性问题 解决方法: 将 quite splash --- 改为 quite splash nomodeset 二:从零开始配置ubuntu19.10 sudo ...

  8. 适用于Windows桌面应用程序的.NET Core 3

    介绍 9月,微软发布了新版.NET Core,用于构建Windows桌面应用程序,包括WPF和Windows Forms.从那时起开发人员可以将传统的nfx桌面应用程序(和控件库)迁移到.NET Co ...

  9. 12 Zabbix4.4.0系统sendEmail邮件报警优化

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 12 Zabbix4.4.0系统sendEmail邮件报警优化 接上一章节  Zabbix4.4. ...

  10. MySQL系统变量auto_increment_increment与auto_increment_offset学习总结

    在MySQL中,系统变量auto_increment_increment与auto_increment_offset是与自增列相关的两个参数变量.在官方文档中,将其划分为Replication Mas ...