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. js操作DOM对象

    js操作DOM对象  (Document Object Model)文档对象模型 nodeType返回值 1:元素节点 2:属性节点 3:文本节点 8:注释节点 9: 文档节点 nodeName 节点 ...

  2. python-list操作

    字符串取值不好取 数组,存在编号,易于取值,(list array) 1.list 定义:name=[]   由中括号定义数组,例如name=['jyj','ws','jyt','js'] 2.lis ...

  3. eclipse集成lombok

    第一部下载 lombok jar包 https://projectlombok.org/download.html lombok下载地址,进入该网址后可以看到如下界面,点击下载就行了.   下载 ja ...

  4. [Swift]LeetCode281. 之字形迭代器 $ Zigzag Iterator

    Given two 1d vectors, implement an iterator to return their elements alternately. For example, given ...

  5. [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 ...

  6. [Swift]LeetCode673. 最长递增子序列的个数 | Number of Longest Increasing Subsequence

    Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: I ...

  7. Java运行原理及内存分析

    Java运行原理及内存分析 一.Java运行原理 二.Java内存分析

  8. HTML常用特殊字符编码对照表以及其对应英文

    符号 说明 对应编码(使用时去掉空格) 英文 & AND 符号 & amp; ampersand < 小于 & lt; little > 大于 & gt; ...

  9. 微信小程序开发测试

    微信小程序 在2017-01-09正式上线,本着跟上时代潮流的精神,写一份教程来看看 微信IDE下载地址为: 微信IDE 在windows下直接 双击 exe安装即可,安装完成后的界面如下: 得到这个 ...

  10. .NET Core实战项目之CMS 第九章 设计篇-白话架构设计

    前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...