let与const认识
es2015之前
在es2015之前JavaScript并没有块级作用域这个说法,只有全局和函数级的变量,let的出现使JavaScript语言有了块级作用域
在外面访问
{
var a=5;
let b=10;
}
console.log(a,b);//a=5 b=undefined
在里面访问
{
var a=5;
let b=10;
{
console.log(a,b);//a=5 b=12
}
}
泄密
for(var i=0; i<5; i++){};
console.log(i)//i=5
for(var i=0; i<5; i++){};
console.log(i)//i=undefined
提升
使用var声明的变量会提升,而使用let声明的变量不会提升
function f(){
console.log(a);
var a=5;
/*等价于
var a;
console.log(a);
a=5;*/
}
f()//a=undefined
function f(){
console.log(a);
let a=5;
}
f()//a is not defined
代替立即执行匿名函数
var config = (function(){
var config = [];
config.push(1);
config.push(2);
config.push(3);
return config;
})();
let config;
{
config = [];
config.push(1);
config.push(2);
config.push(3);
}
在严格模式(use strict)下运行函数不会被提升
function a(){console.log(1);}
function f(){
a();
if(false){
function a(){console.log(2)}
}
}
//这段代码在非严格模式下运行会打印出2,在严格模式下运行会打印出1
- 实例例子
var arr= [];
function f(){
for(var i=0; i<5; i++){
arr.push(function(){
console.log(i);
})
}
}
f();
arr[3]()//
arr[4]()//
arr[1]()//
想要执行出想要的结果arr[x]()//x就必须用到let
var arr= [];
function f(){
for(let i=0; i<5; i++){
arr.push(function(){
console.log(i);
})
}
}
f();
arr[3]()//
arr[4]()//
arr[1]()//
在es2015之前您必须这样做
var arr= [];
function f(){
for(var i=0; i<5; i++){
arr.push((function(i){
return function(){
console.log(i);
}
})(i))
}
}
f();
arr[3]()//
arr[4]()//
arr[1]()//
let与const认识的更多相关文章
- openssl 1.1.1 reference
openssl 1.1.1 include/openssl aes.h: # define HEADER_AES_H aes.h: # define AES_ENCRYPT 1 aes.h: # de ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- C++中的const
一,C++中const的基本知识 1.C++中const的基本概念 1.const是定义常量的关键字,表示只读,不可以修改. 2.const在定义常量的时候必须要初始化,否则报错,因为常量无法修改,只 ...
- const extern static 终极指南
const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...
- const let,console.log('a',a)跟console.log('a'+a)的区别
const 创建一个只读的常量 let块级作用域 const let重复赋值都会报错 console.log('a',a) a console.log('a'+a) a2 逗号的值会有空格:用加号的值 ...
- es6之let和const
在javascript中,我们都知道使用var来声明变量.javascript是函数级作用域,函数内可以访问函数外的变量,函数外不能访问函数内的变量. 函数级作用域会导致一些问题就是某些代码块内的变量 ...
- construction const parameter问题 构造函数const引用参数问题
工程在window下编译没有任何问题, 但是在linux(CentOS6)下编译就老是报错 C++ 编译器已升级到最新版 6.1.0 错误如下: In file included /bits/stl_ ...
- Error:const char* 类型的实参和LPCWSTR类型的形参不兼容的解决方法。
在C++的Windows 应用程序中经常碰到这种情况. 解决方法: 加入如下转换函数: LPCWSTR stringToLPCWSTR(std::string orig) { size_t origs ...
- C#基础知识七之const和readonly关键字
前言 不知道大家对const和readonly关键字两者的区别了解多少,如果你也不是很清楚的话,那就一起来探讨吧!探讨之前我们先来了解静态常量和动态常量. 静态常量 所谓静态常量就是在编译期间会对变量 ...
- const 与 readonly知多少
原文地址: http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html 尽管你写了很多年的C#的代码,但是可能当别人问到你cons ...
随机推荐
- 改改Python代码,运行速度还能提升6万倍
这份最新研究指出,在后摩尔定律时代,人类所获得的的算力提升将更大程度上来源于计算堆栈的「顶层」,即软件.算法和硬件架构,这将成为一个新的历史趋势. 很多人学习python,不知道从何学起.很多人学习p ...
- 怎么在微信公众号上传PPT?
我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众号添加附件使用“微附件”小程序的教 ...
- 当你的系统依赖于某个bug...
标题粗略看是有点违反常识的,bug通常是指某些代码存在问题导致系统没有按照期望方式工作,应该是需要尽可能被修复的,这样系统才会正常工作.但是,开发实践中会发现在某些情况下,本来功能没有问题,在你信心满 ...
- Java—增强for循环与for循环的区别/泛型通配符/LinkedList集合
增强for循环 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的. 它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作. ...
- 2020-07-06:一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录
福哥答案2020-07-06:表a和表b的字段都是id和tid,数据类型都是int.查询结果顺序上以 表a 为准.1.JOIN.SELECT * FROM a JOIN b ON a.tid = b. ...
- C#LeetCode刷题之#56-合并区间(Merge Intervals)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3676 访问. 给出一个区间的集合,请合并所有重叠的区间. 输入: ...
- 火题小战 B. barbeque
火题小战 B. barbeque 题目描述 \(Robbery\) 是一个大吃货(雾) 某个神奇的串由牛肉和青椒构成,于是\(Robbery\)购买了\(n\)个餐包来自己做这个串,每个餐包中有一些牛 ...
- low-code 与 20 年前的 Dreamweaver 有什么区别?
一.low-code 是什么? A low-code development platform (LCDP) is software that provides a development envir ...
- 分享一个Flink checkpoint失败的问题和解决办法
本文来自: PerfMa技术社区 PerfMa(笨马网络)官网 接触Flink一段时间了,遇到了一些问题,其中有一个checkpoint失败导致作业重启的问题,遇到了很多次,重启之后一般也能恢复正常, ...
- Python Unofficial Windows Binary
python一些安装包有时候在windows下无法 直接安装. 可以在一个非官方的Python Windows扩展库里面找到对应的打包好的whl,下载后直接安装. https://www.lfd.uc ...