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. jmeter-中文乱码问题

    1.被测系统中问乱码 解决办法:接口请求时添加编码方式UTF-8

  2. art-template的循环操作

    art-template的官方文档(网址:https://aui.github.io/art-template/docs/)中对循环的介绍如下: 循环 标准语法 {{each target}} {{$ ...

  3. WSL捣鼓记——图形化(以emacs为例)

    前言 这学期开始学习linux,但笔记本装了双系统之后指纹识别会失效,开虚拟机又十分占据内存,于是乎基本需要使用linux的时候就用wsl,可奈何只有命令行界面,在需要使用图形软件(如emacs)的时 ...

  4. 云计算 docker 容器使用命令

    docker 使用命令: docker version 查看docker版本号 vi /etc/docker/daemon.json { "registry-mirrors": [ ...

  5. Codeblocks 等软件 修改源代码后 不能立即执行的解决办法||exe文件删除慢

    不懈地奋斗了两天,终于找到原因了. 记录如下 症状: Codeblocks .Visual Studio 都出现此问题:修改源代码 无法立即执行 ,就是:cannot open output file ...

  6. 微软并发Key-Value存储库FASTER介绍

    微软支持并发的Key-Value 存储库有C++与C#两个版本.号称迄今为止最快的并发键值存储.下面是C#版本翻译: FASTER C#可在.NET Framework和.NET Core中运行,并且 ...

  7. Spark集群安装与配置

    一.Scala安装 1.https://www.scala-lang.org/download/2.11.12.html下载并复制到/home/jun下解压 [jun@master ~]$ cd sc ...

  8. python小例子(三)

    1.提高Python运行速度的方法 (1)使用生成器,节约大量内存: (2)循环代码优化,避免过多重复代码的执行: (3)核心模块使用cpython,pypy等: (4)多进程,多线程,协程: (5) ...

  9. [转载]制作QT字库文件

    原文地址:http://www.cnblogs.com/liu_xf/archive/2011/07/05/2098144.htm 摘要: QT4.7.0在移植到开发板上的时候,中文支持是必不可少的, ...

  10. Chrome插件开发(二)

    作为一个前端开发者,我们经常需要和各种各样的接口打交道,很多时候我们的开发环境的域和接口所在的域是不同的,比如我们本地开发环境运行域是localhost,但接口所在的域是www.xx.com,这个时候 ...