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 = undefined
console.log (b)
b = 4
} */
//使用let 定义
function fn1() {
console.log (b)
let b = 4
}
fn1();
//报错 提示b没有定义 使用let 定义的b 不存在变量提升 并且也访问不到外面定义的b ,暂时性死区
 function fn2() {
  let aa = 3
  let aa = 4
 }
   fn2() //报错,dentifier 'aa' has already been declared 不能重复定义

  1.2 const 常量

  定义:声明后的常量就不能修改,不能重复定义 ,也只在当前代码块内有用,常量定义时必须先赋值

const ba  //报错必须先赋值

{
const bb = 4
}
console.log(bb) //bb未定义, 只在当前代码块可用 const bc = 56
bc = 54 //报错,常量定义后不能修改值 const person = {
name: 'czklove',
age: '18'
}
person.age = 24 // 不报错,对于引用类型,常量只是不改变他的地址
//可以使用 Object.freeze 冻结
const child = Object.freeze({
name: 'czklove',
age: '18'
})
child.name = 'lll' //正常模式下该行代码忽略 严格模式下报错 //如果对象的属性也是引用类型 ,则需要冻结对象上所有的属性,调用递归的方法

  1.3 var

  es6 之前除了在方法里定义的var 变量之外,所有var 定义的var 变量都是全局可用

var c = 44
function fn3() {
c = 56
b = 45
}
console.log(b) //报错 b没有定义
for(var i = 1;i < 9; i++) {
}
console.log(i) //9 for ()里定义的变量 全局可用
//变量声明提升 可以见let 的例子

  

  

  

es6的let,const的更多相关文章

  1. (1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍

    1.let声明变量,var声明变量,而const声明的常量 2.let与var的区别 let可以让变量长期驻扎在内存当作 let的作用域是分块[ {快1  {快2 }  }每个大括号表示一个独立的块 ...

  2. ES6 let和const详解及使用细节

    ES6之前javascript只有全局作用域和函数作用域,所以经常会遇到变量提升了或者使用闭包的时候出错的问题. 所有a[i]都会输出10: var arr=[]; for (var i=0;i< ...

  3. ES6 let和const命令(3)

    const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...

  4. es6 let和const命令(1)

    基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...

  5. JavaScript ES6 let、const

    在ES6中,增加了2个声明变量的关键字:let 和 const.在这里将详细介绍let与var的区别.Babel对let的处理以及const的简单使用. 1. let 在ES6规范中增加了 let 关 ...

  6. es6 let 和 const

    function test(){ let a = 1 for (let i =0;i<3;i++){ console.log(i)         //1,2 } console.log(i)  ...

  7. ES6的 let const 以及块级作用域

    let声明变量 用法类似于var,但是所声明的变量只在let所在的代码块内有效. 1 . 在ES6环境下,let声明的变量不能在声明之前调用. 例: console.log(i); //会报错,这叫做 ...

  8. es6 let和const

    一.let 1.let块作用域 if(true){ var a=1; let b=2; } console.log("a:"+a);//a:1 console.log(" ...

  9. es6中let,const区别与其用法

    ECMAScript 是什么? 首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM: 其中的ECMAScript是Javascript的语法规范. ECMAScri ...

随机推荐

  1. 浅谈开发中python通过os模块存储数据

    #其实本人很烦发博客,但为了面试还是发一下好,证明一下自己的能力 前言 首先说一下适用环境,在开发中我们有一些经常用到的数据(数据量大)需要存储起来. 存sql嘛又不合适,要知道在开发中每条sql语句 ...

  2. 深入理解Spring Redis的使用 (八)、Spring Redis实现 注解 自动缓存

    项目中有些业务方法希望在有缓存的时候直接从缓存获取,不再执行方法,来提高吞吐率.而且这种情况有很多.如果为每一个方法都写一段if else的代码,导致耦合非常大,不方便后期的修改. 思来想去,决定使用 ...

  3. [Swift]LeetCode492. 构造矩形 | Construct the Rectangle

    For a web developer, it is very important to know how to design a web page's size. So, given a speci ...

  4. [Swift]LeetCode926. 将字符串翻转到单调递增 | Flip String to Monotone Increasing

    A string of '0's and '1's is monotone increasing if it consists of some number of '0's (possibly 0), ...

  5. [Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching

    A query word matches a given pattern if we can insert lowercase letters to the pattern word so that ...

  6. winform文件筛选器

    在.net 框架中,微软给我们封装了一个用于打开文件的对话框——OpenFileDialog.而该对话框包含一个可以筛选文件的属性——Filter,利用该属性,可选筛选出我们需要的文件.   因此,我 ...

  7. LongAdder 测试

    import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java.util.concurrent.CountDownLatch;i ...

  8. 一张脑图说清 Nginx 的主流程

    一张脑图说清 Nginx 的主流程 这个脑图在 nginx-1.14.0-research 上.这是我在研究nginx的http模块的时候画的.基本上把 Nginx 主流程(特别是 HTTP 的部分) ...

  9. 【MongoDb入门】15分钟让你敢说自己会用MongoDB了

    一.MongDB是什么呢,我该如何下手呢? MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 如果小伙伴你的机器上还没有安装Mon ...

  10. 面向切面编程 ( Aspect Oriented Programming with Spring )

    Aspect Oriented Programming with Spring 1. 简介 AOP是与OOP不同的一种程序结构.在OOP编程中,模块的单位是class(类):然而,在AOP编程中模块的 ...