1. let的作用域在代码块中仅限在当前的作用于中

 {
var str1 = 12;
console.log(str1); //
let str2 = 20;
console.log(str2); //20    
}
console.log(str1); //12
console.log(str2); //报错

2. let的变量不会被提升

 {
console.log(str1); //undedfined
var str1 = 12;
//等同于
var str;
console.log(str1);
str1 = 12; console.log(str2); //报错 未定义
let str2 = 20;
//等同于
console.log(str2);
let str2;
str2 = 20;
}

3. let 不能重复声明

 {
var str1 = 12;
var str1 = 15;
console.log(str1); // let str2 = 20;
let str2 = 25;
console.log(str2); //报错 不能声明两个相同的变量 //整个内容一起运行的时候上边的代码不会执行结果,因为实在解析str2的时候出错的
}

4. let的父子作用域

//  假设有5个按钮
var btns = document.getElementsByTagName("button"); for (var i = 0; i < btns.length; i++) {
btns[i].onclick = function (){
console.log(i); //始终为5
}
}
// 如果要想实现显示点击的第几个要用到闭包
for (var i = 0; i < btns.length; i++) {
(function(i){
btns[i].onclick = function (){
console.log(i); //从0开始点击那个显示第几个
}
})(i)
} // 用let
let btns = document.getElementsByTagName("button");
for (let i = 0; i < btns.length; i++){
btns[i].onclick = function (){
console.log(i); //从0开始点击那个显示第几个
}
} // 再看一个例子
for(let i = 0; i < 5; i++){
let i = 20;
console.log(i); //20 输出5次 (如果改为var 只会输出一次20)
}

5. const(一般声明常量)

const 与let 类似,有几个相同点,就不在粘贴代码了

1)  只在当前代码块作用域中有效

2)  不会被提升

3)  不能重复声明

不同之处

1)声明的时候必须赋值如下

const name = "张三";
console.log(name);
// 下面这样会报错
const name;
name = "张三";
console.log(name); // 报错

2)声明的值不能修改(对象除外)

const name;
name = "张三";
console.log(name); // 报错 // 如果是对象的话可以修改,因为对象是存放的时堆内存
const obj = {
name: "张三"
}
console.log(obj.name); // 张三
obj.name = "李四";
console.log(name); //李四

PS:我是一个新手,写这个除了分享外,也算是自己做的一个笔记,欢迎各位的大神指点,内容浅显,不喜勿喷,如果有错误,请指点

let 和const与var的不同的更多相关文章

  1. JavaScript中const、var和let区别浅析

    在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...

  2. JS中const、var 和let的区别

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...

  3. js中三种定义变量 const, var, let 的区别

    js中三种定义变量的方式const, var, let的区别 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 ...

  4. 关于ES6的let,const与var之间的三生三世

    首先需要明确的是let.const.var都是用来定义变量的 在ES6之前,我们一般都用var来定义变量,例如 : function test(){ var i=1; console.log(i); ...

  5. delphi中move函数的正确理解(const和var一样,都是传地址,所以Move是传地址,而恰恰不是传值)太精彩了 good

    我们能看到以下代码var pSource,pDest:PChar;     len: integer;.......................//一些代码Move(pSource,pDest,l ...

  6. ES6中let、const和var的区别

    一.let 1.基本用法 ES6 新增了let命令,用来声明变量. let 的用法类似于 var,但所声明的变量只在 let 命令所在的代码块内有效(一个“{}”相当于一个代码块) { let a = ...

  7. 浅谈ES6——ES6中let、const、var三者的区别

    在了解let.const.var的区别之前,先了解一些什么是es6 Es6 全称ECMAscript 是JavaScript语言的一个标准,其实Es6本质就是JavaScript的一个版本,为什么叫E ...

  8. let、const、var区别?

    let.const.var区别? let和const不存在变量提升(没有预解析,var有预解析). let和const在同一作用域范围内不能重复定义变量.(var可以). let和const有严格的作 ...

  9. js中三种定义变量的方式const, var, let的区别。

    const   var  let区别 1.const 定义的变量不可以修改,而且必须初始化 const a = 3;正确 const a;错误,必须初始化 console.log("函数外c ...

随机推荐

  1. POJ 2472 106 miles to Chicago(Dijstra变形——史上最坑的最长路问题)

    题目链接 :http://poj.org/problem?id=2472 Description In the movie "Blues Brothers", the orphan ...

  2. JavaScript 版数据结构与算法(一)栈

    今天,我们要讲的是数据结构与算法中的栈. 栈的简介 栈是什么?栈是一个后进先出(LIFO)的数据结构.栈有啥作用?栈可以模拟算法或生活中的一些后进先出的场景,比如: 十进制转二进制,你需要将余数倒序输 ...

  3. 入门VMware Workstation下的Debian学习之基本命令(二)

    本章记录如何在Linux终端进行命令操作命令下载路径,模拟终端.dkpg管理软件包.用户组和用户管理.文件属性.文件与目录管理.查看磁盘使用量. (1)命令下载路径: wegt 路径; (2)模拟终端 ...

  4. ZOJ2402 Lenny's Lucky Lotto List 简单DP

    Lenny's Lucky Lotto Lists Time Limit: 2 Seconds      Memory Limit:65536 KB Lenny likes to play the g ...

  5. http://zthdd.bokee.com/6189963.html

    http://zthdd.bokee.com/6189963.html先保存

  6. 广州图书馆借阅抓取——httpClient的使用

    欢迎访问我的个人网站,要是能在GitHub上对网站源码给个star就更好了. 搭建自己的网站的时候,想把自己读过借过的书都想记录一下,大学也做过自己学校的借书记录的爬取,但是数据库删掉了==,只保留一 ...

  7. java连接sqlserver2008r2 心得

    现在是该轻松一笑的时候了,困扰已久的问题有了解释了. 之前的各种连不上,说到底还是权限问题,sqlserver2008r2的权限分得太细了. 两个实例间数据库互相都看不到,更不用谈访问了. 端口号也是 ...

  8. win10 UWP RSS阅读器

    RSS简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议.RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使 ...

  9. 初学者易上手的SSH-hibernate01环境搭建

    这里我们继续学习SSH框架中的另一框架-hibernate.那么hibernate是什么?Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序 ...

  10. Linq标准查询操作符

     Linq的出现让代码简洁了不少.之前在项目中基本都在使用它,但是没有完整的整理过,今天借这个周末,将其进行整理,方便后期对其的使用.Linq的操作可以分为聚合,连接,转换,元素操作符,相等操作,生成 ...