var、let、const
var、let、const之间的区别和使用
1、var声明变量可以重复声明,而let不可以重复声明
let a = 1;
let a = 2;
var b = 3;
var b = 4;
a // Identifier 'a' has already been declared
b //
2、var是不受限于块级的,而let是受限于块级
{
let a = 11
var b = 12
}
console.log(b) //
console.log(a) //a is not defined
3、let 不存在变量提升,var 会变量提升:
console.log(a); //ReferenceError: a is not defined
let a = "apple"; console.log(b); //undefined
var b = "banana";
4、const声明之后必须赋值,否则会报错
const PI = "3.1415926";
PI // 3.1415926 const MY_AGE; // SyntaxError: Missing initializer in const declaration
6、const定义不可变的量,改变了就会报错
const aa = 223
aa = 456 //Assignment to constant variable.
console.log(aa)
7、一旦函数里面使用了const和let,全局变量在里面就无法使用
var PI = "a";
if(true){
console.log(PI); // ReferenceError: PI is not defined,就算在外面的是let,都报错
const PI = "3.1415926";
}
注意:
const 如何做到变量在声明初始化之后不允许改变的?其实 const 其实保证的不是变量的值不变,而是保证变量指向的内存地址所保存的数据不允许改动。此时,你可能已经想到,简单类型和复合类型保存值的方式是不同的。是的,对于简单类型(数值 number、字符串 string 、布尔值 boolean),值就保存在变量指向的那个内存地址,因此 const 声明的简单类型变量等同于常量。而复杂类型(对象 object,数组 array,函数 function),变量指向的内存地址其实是保存了一个指向实际数据的指针,所以 const 只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了,所以使用 const 声明复杂类型对象时要慎重。
const aa = {
a:456,
b:789,
c:123
}
aa.c = 4562456
aa.k =1234789
console.log(aa.k) //
//const只是保存了一个指向实际数据的指针,对于复杂对象类型(对象 object,数组 array,函数 function)数据结构变不变,const并无法控制
var、let、const的更多相关文章
- 认识 var、let、const
我们通过声明.初始化.值的可变性.作用域.变量提升以及在工作中如何使用等多个方面来详细了解var.let.const等关键字功能与特点. 声明 var,let:可以先声明,后赋值(初始化),默认值是 ...
- var、let、const区别
1.let不存在变量提升,必须升明后才可用. 'use strict'; (function(){ console.log(varTest); console.log(letTest); var va ...
- var与let、const的区别
var与let.const 一.var声明的变量会挂载在window上,而let和const声明的变量不会: var a = 100;console.log(a,window.a); // 100 1 ...
- JS中的块级作用域,var、let、const三者的区别
1. 块作用域{ } <script type="text/javascript"> { var a = 1; console.log(a); // 1 } conso ...
- JavaScript中var、let和const的区别(转载)
一.前言 在ES6(ES2015)出现之前,JavaScript中声明变量就只有通过 var 关键字,函数声明是通过 function 关键字,而在ES6之后,声明的方式有 var . let . c ...
- javascript中var、let和const的区别
在javascript中,var.let和const都可以用来声明变量,那么三者有什么区别呢?要回答这个问题,我们可以从先想想:三种不同的声明会影响变量的哪些方面?这些方面也就是变量的特性,那么变量有 ...
- 关于var、let、const的故事
对于一门编程语言来说,变量与常量是再正常不过的两种,JavaScript是一直解释型的弱类型语言. JavaScript中变量或者常量可以用var.let.const(后两者是ES6的新特性). 1. ...
- delphi 函数参数传递 默认参数(传值)、var(传址)、out(输出)、const(常数)四类
参数可以分为: 默认参数(传值).var(传址).out(输出).const(常数)四类 {默认参数是传值, 不会被改变} function MyF1(x: Integer): Integer; be ...
- js中var、let、const区别
javascript中有三种声明变量的方式:var.let.const 1.var 作用域:全局或局部 var的作用域可以是全局或是局部,以下分四种情况说明: (1).当var关键字声明于函数内时是局 ...
- 【Go入门教程4】变量(var),常量(const),内置基础类型(Boolean、数值 byte,int,rune、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值
这小节我们将要介绍如何定义变量.常量.Go 内置类型以及 Go 程序设计中的一些技巧. 定义变量 Go 语言里面定义变量有多种方式. 使用 var 关键字是 Go 最基本的定义变量方式,与 C 语言不 ...
随机推荐
- 实际开发中 dao、entity的代码怎样自动生成?一款工具送给你
01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...
- (js描述的)数据结构[字典](7)
(js描述的)数据结构[字典](7) 一.字典的特点 1.字典的主要特点是一一对应关系. 2.使用字典,剋通过key取出对应的value值. 3.字典中的key是不允许重复的,而value值是可以重复 ...
- Linux网络安全篇,认识防火墙(三),TCP Wrappers
1.防火墙设置文件 任何以xinetd管理的服务都可以通过 /etc/hosts.allow /etc/hosts.deny 这两个文件来设置防火墙(针对源IP或域进行允许或操作的设置). 其实/et ...
- Linux网络篇,ssh原理及应用
一.对称加密与非对称加密 对称加密: 加密和解密的秘钥使用的是同一个. 非对称加密: 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥:简称公钥和私钥 对称加密 对称加密的密 ...
- JAVA debug 断点调试
更多调试参看 https://www.cnblogs.com/yjd_hycf_space/p/7483471.html 先编译好要调试的程序.1.设置断点 选定要设置断点的代码行,在行号的区域后面单 ...
- String 对象-->toUpperCase() 方法
1.定义和用法 将字符串中所有的小写字符转换成大写字符,大写字符保持不变 返回转换后的结果字符串 语法: string.toUpperCase() 注意:不会改变字符串本身,仅以返回值的形式返回结果 ...
- 三、CentOS 7.X系统安装配置超祥细图解教程
一.CentOS7.7下载 官网下载地址:http://mirrors.163.com/centos 1.进入CentOS下载官网,找到CentOS7.4版本 2.在CentOS7.7版本页面中,找到 ...
- 记一次Windows蓝屏分析
大半夜收到此类信息,应该是让所有系统管理员最头大的事情了 首先我快速通过iDRAC,发现服务器发生了重启操作,并得到相关日志信息 通过Dell的官方解释,确定了该问题是OS层面的异常导致.打开Wind ...
- [译]谈谈SpringBoot 事件机制
要"监听"事件,我们总是可以将"监听器"作为事件源中的另一个方法写入事件,但这将使事件源与监听器的逻辑紧密耦合. 对于实际事件,我们比直接方法调用更灵活.我们可 ...
- Bug Bash in Personal Photo Experience 1/11/2016
In the process of our Personal Photo Experience Project, There are some bugs which hinder our forwar ...