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. 算法问题实战策略 DICTIONARY

    地址 https://algospot.com/judge/problem/read/DICTIONARY 解法 构造一个26字母的有向图 判断无回路后 就可以输出判断出来的字符序了 比较各个字母的先 ...

  2. c语言-----劫持原理

    1. 劫持原理介绍 (1) 通过劫持技术我们可以实现某些进程的拦截,比如禁止创建文件,禁止打开qq,禁止关机等等一系列的操作 (2) 弹窗拦截就是最常见的一种劫持技术的实现. 2. 使用的工具 (1) ...

  3. 百万年薪python之路 -- 字典(dict)练习

    1.请将列表中的每个元素通过 "_" 链接起来. users = ['大黑哥','龚明阳',666,'渣渣辉'] users = ['大黑哥','龚明阳',666,'渣渣辉'] u ...

  4. day14作业

    文件内容如下,标题为:姓名,性别,年纪,薪资 egon male 18 3000 alex male 38 30000 wupeiqi female 28 20000 yuanhao female 2 ...

  5. 微信支付 get_brand_wcpay_request fail,Undefined variable: openid

    本文将为您描述微信H5支付,微信JSAPI支付返回支付签名验证失败的解决方法 微信JSAPI支付时报这个错误 查看错误详情 alert(JSON.stringify(res)) 微信商户平台相关设置: ...

  6. 面向对象之---this的用法

    在绝大多数情况下,函数的调用方式决定了this的值 全局环境 无论是否在严格模式下,在全局执行环境中,this都指向全局对象· 在全局作用域中调用一个函数时,this总是指向Global对象(在浏览器 ...

  7. 2018.8.15 python中的冒泡法排序

    # 给出一个纯数字列表. 请对列表进行排序. # 思路: # 1.完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10 # 2.循环列表. 判断a[i ...

  8. centos7 搭建ftp 并配置用户目录

    1.如果是阿里云服务器,登录控制后台,配置规则,开启21端口 (sftp是加密文件传输使用的22端口,我们这几是搭建ftp服务器) 2.安装配置vsftp服务器 一.配置防火墙,开启FTP服务器需要的 ...

  9. SpringBoot系列:Spring Boot异步调用@Async

    在实际开发中,有时候为了及时处理请求和进行响应,我们可能会多任务同时执行,或者先处理主任务,也就是异步调用,异步调用的实现有很多,例如多线程.定时任务.消息队列等, 这一章节,我们就来讲讲@Async ...

  10. [2018-07-4] django笔记

    新建app python ..\venv\scripts\django-admin.py startapp cy python manage.py makemigrations python mana ...