复习es6-let和const】的更多相关文章

1.let声明变量,var声明变量,而const声明的常量 2.let与var的区别 let可以让变量长期驻扎在内存当作 let的作用域是分块[ {快1  {快2 }  }每个大括号表示一个独立的块 ]的,块内的变量不会覆盖块外的变量值. { //(模)块1 let a = 1; if(true){ //(模)块2 let a = 2; } console.log(a); //1,因为块内的变量不会覆盖块外的变量值 } let与var:同一个代码块里面不能出现变量重复声明 3.const声明常量…
ES6之前javascript只有全局作用域和函数作用域,所以经常会遇到变量提升了或者使用闭包的时候出错的问题. 所有a[i]都会输出10: var arr=[]; for (var i=0;i<10;i++){ arr[i]=function(){ console.log(i); }; } 变量提升,输出undefined. function showName(){ console.log(name); var name = "Jhon"; } ES6引入了let和const关…
const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在暂时性死去,只能在声明后使用. 对于复合型变量,变量名不指向数据,而是指向数据所在的地址.const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个变量声明为常量要非常小心. const foo = {}; foo.prop = 123; console.log(foo.pro…
基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log(i);//ReferenceError:i is not defined 而下面代码的var作用就是全局 for (var i = 0; i < 5; i++) {} console.log(i);//5 如果将console.log(i)放在{}中,ES6将会输出6 不存在变量提升 let不像var那…
在ES6中,增加了2个声明变量的关键字:let 和 const.在这里将详细介绍let与var的区别.Babel对let的处理以及const的简单使用. 1. let 在ES6规范中增加了 let 关键字.let有什么用呢?与var有什么区别呢? 1.1 let 的作用 let,可用于声明一个块级作用域的变量. 如在if()语句内用let声明的变量,不会延伸到if()语句外部. function foo() { if (true) { let x = 1; } console.log(x); /…
function test(){ let a = 1 for (let i =0;i<3;i++){ console.log(i)         //1,2 } console.log(i)    //error console.log(a) const app = 1 const data = {   //对象是引用类型,最后返回的是对象存的指针,可以改变内部的值 a: 1 } data.a = 3 console.log(app ,data.a)      // 1  3 } test()…
let声明变量 用法类似于var,但是所声明的变量只在let所在的代码块内有效. 1 . 在ES6环境下,let声明的变量不能在声明之前调用. 例: console.log(i); //会报错,这叫做暂时性死区,会提示 i 未定义 let i ; let不允许在变量还没声明完成前,赋值给其他变量,或者是自己 let a = a; //报错 应该先声明,再赋值 let a ; a = 1; 或者直接赋值 let a = 1; var b = b; //不会报错,但是会返回undefined,没有赋…
1.es6 新增的let const 命令 let用来定义一个局部变量,故名思意就是只在当前代码块可用 1.1 let 声明的变量不存在变量提升(var 声明的变量存在变量提升)且代码块内 暂时性死区 且不允许重复声明 列子 var b = 3; function fn () { console.log (b) var b = 4 } fn(); // undefined //由于存在变量提升 实际代码是 /* var b = 3; function fn () { var b = undefi…
一.let 1.let块作用域 if(true){ var a=1; let b=2; } console.log("a:"+a);//a:1 console.log("b:"+b);//Uncaught ReferenceError: b is not defined 2.let常用于for循环 var a=[]; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); //6…
ECMAScript 是什么? 首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM: 其中的ECMAScript是Javascript的语法规范. ECMAScript定义了很多东西,如: 语法-----解析规则,关键字,语句,声明,操作等 类型-----布尔型,数字,字符串,对象等 原型和继承 内置对象,函数的标准库----------JSON, Math, 数组方法,对象方法等 浏览器兼容: 目前Google和Firefox浏览器对ES6新特性的兼容最友好…
hi,我又回来了,今天学习一下const命令. 声明一个常量 const声明一个只读常量,一旦声明,常量的值便不可改变. 例子如下: const food = 12; food = 23; // Uncaught TypeError: Assignment to constant variable. 还可以声明一个变量 const可以声明一个变量,声明以后,必须初始化,否则变错. 例子如下: const food; // Uncaught SyntaxError: Missing initial…
本博文配合 阮一峰 <ES6 标准入门(第3版)>一书进行简要概述 ES6 中的 let 与 const. 历史遗留问题 由于 JS ES3语法中的 var 提升变量.没有块级作用域,因而搞出来了一大波的 "副产品",匿名立即执行函数.闭包,都是 ES3 JS 遗留下来的产物.所以学过 C 和 Python 再来看 JS ,会感觉很奇怪.因为 ES6 之前,没有块级作用域,只有通过立即执行函数+闭包的方式造一个局部函数作用域. let let的出现解决了 JS 曾经没有块级…
1.前言 发现网易云笔记 单纯的记笔记没什么意思,所以今天来博客园写学习感受了,毕设做了休息时间就来写写新学的知识 哈哈哈 !! 2.ES6 就是JavaScript 语言的下一代标准,2015年6月发布..一会 3.首先来看看let 和const let 1.变量名不会提升 2.块级作用域(补充有解释) 3.相同的块中,通过 let 重新声明一个 var 变量是不允许的 4.for 循环中的父子作用域 for(let i=0; i<btns.length; i++){ btns[i].oncl…
一.var 的缺陷:var 只有全局作用域和函数作用域,没有块级作用域,除了在函数内部的变量默认都属于window var foo='hello'; fn=function(){ var foo='world' } fn(); console.log(foo);//hello if(true){ var foo='bar' } console.log(foo);//bar 二.let 定义变量:ES6新增可以定义块级作用域,但是没有变量提升,必须先声明再使用,不能重复声明,主要是解决了var没有…
看过很多大佬的ES6笔记,总结一下学习后的收获,给自己当作一个笔记用用: ES3.ES5定义变量有两种方法:var 和 function ES6定义变量有var.function.let.const等方法 let定义的变量,只在其块级作用域中生效,不会像var定义的变量发生变量提升,let定义的变量如果在定义之前使用,会发生语法错误,而ES5 var 定义的变量在定义前使用,只会提示undefined ***ES6中不允许重复声明同名变量:在函数中,也不允许声明与函数参数同名的变量*** con…
1. let 命令 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b 上面代码在代码块之中,分别用let和var声明了两个变量.然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值.这表明,let声明的变量只在它所在的代码块有效. for循环的计数器,就很合适使…
```javascript //es6新增块级作用域.声明变量用关键字let const , // es5中只有函数作用域和全局作用域,声明变量用关键字var  // let 和const 声明的变量不存在变量提升,var声明的变量存在变量提升. //let 和const声明的变量只在块级作用域有效,既它所在当前的代码区块内.;let不能重复声明同一变量. //let 声明的变量存在暂时性死区,即未声明就去使用会报出 引用(ReferenceError)错误. //var 声明的全局变量 自动跨…
1.const声明一个只读常量,一旦声明,常量的值就不能改变 1 const PI=3.1415; 2 console.log(PI);//3.1415 3 4 PI=3;//Uncaught TypeError: Assignment to constant variable. 2.const一旦声明常量,就必须立即初始化,不能留到以后赋值 1 const WIDTH;//Uncaught SyntaxError: Missing initializer in const declaratio…
  1.const声明一个只读常量,一旦声明,常量的值就不能改变 1 const PI=3.1415; 2 console.log(PI);//3.1415 3 4 PI=3;//Uncaught TypeError: Assignment to constant variable. 2.const一旦声明常量,就必须立即初始化,不能留到以后赋值 1 const WIDTH;//Uncaught SyntaxError: Missing initializer in const declarat…
一.let定义变量 { let a = 1;} console.log(a);只在let所在的代码块有效,console的结果是a is not defined,报错. 不存在var的变量提升,即使用let的话变量一定要在声明之后再使用,否则会报错.存在暂时性死区,即在声明变量之前使用该变量,会报错,即使使用typeof运算符.不允许在相同作用域内重复声明同一个变量.二.constconst声明一个只读的常量.一旦声明,常量的值就不能改变.这意味着,const一旦声明变量,就必须立即初始化,不能…
const声明的常量只在当前代码块有效.如果想设置跨模块的常量,可以采用下面的写法. //constants.js模块 export const A = 1; export const B = 3; export const C = 4; //test1.js模块 import * as constants from './constants'; console.log(constants.A);//1 console.log(constants.b);//3 //test2.js模块 impo…
为什么要使用块级作用域 在ES5中只有全局作用域和函数作用域,没有块级作用域,因此带来了这些麻烦 内层变量可能会覆盖外层变量 var tmp = new Date(); console.log(tmp);//Thu Jan 12 2017 15:47:08 GMT+0800 (中国标准时间) function f() { console.log(tmp);//undefined if (false) { var tmp = "hello world"; console.log(tmp)…
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动. 效果 对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 对于复合类型的数据(主要是对象和数组),变量指向的内存地址,const只能保证这个指针是固定的,不能保证它指向的数据结构是不可变得 'use strict' const obj = {} const arr = [] obj.prop = 123 // 不改动指针 arr.push('Hello') // 只改…
今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 console.log('函数外const定义b:' + b);//有输出值 4 // b = 5; 5 // console.log('函数外修改const定义b:' + b);//无法输出 2.var定义的变量…
相同点: 1. 一旦声明 值不能再改变,即不能重复声明. 2.不存在变量提升. 3.都存在暂时性死区. 不同点: 1.const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值.…
1. const 的定义: 1.1 常量定义的时候要赋值,不赋值是会报错的: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta htt…
在ES中const关键字用来声明常量,const声明的一经定义不能修改 和let特性差不多, ; console.log(a); a = ; //报错 const定义完常量后必须赋值,后面不允许再次赋值 const aa; const b; //报错 const定义完后,必须赋值,后面不允许赋值 b=5; alert(b): const c = 12; (function () { console.log(c); //死区 访问不到 const c = 5; //不再同一个作用域 }()) co…
Let 1.使用 Let声明的变量,所声明的变量只在命令所在的代码块内有效. { Let a=1; var b=2; console.log(a) //在代码块里面 可以正常输出a } console.log(a) //输出 a is not defined console.log(b) //输出2 2.使用Let声明的变量在域解析的时候不会被提升 3.Let不允许在同一个作用域下声明已经存在的变量 let在for循环中的 应用 var btns=document.querySelectorAl…
每天学一点,知识涨一张 var 默认是会变量提升的,变量可以修改: let 定义变量,变量可以修: const 定义必须有常量值,const的值一但写上不可更改:let 与const相同之处:1> 都是块级作用域,适用于 {},在括号外面打印里面的值会报错: 2> 变量不可提升. 3>暂时性死区(只要块级作用域内,存在let,const,它所声明的变量就绑定(binding)在这个区域,不再受外部影响.) 举例说明 console.log(alls)//undefined ==>变…
]()) {; } //console.log(MAX);//MAX is not defined" /*也有暂时性死区,声明的位置需要在使用前面,否则报错: * 不能重复声明变量 * */ var message = "Hello!"; //const message = "Goodbye!";//报错,不能重复声明同一个变量 /*3.const本质: * const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动.…