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. DB2 数据库的安装配置及监控

    一.DB2简介 IBM公司研制的一种关系型数据库系统.DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2.Windows等平台下. DB2提供了高层次的数据利 ...

  2. Python爬虫实践 -- 记录我的第一只爬虫

    一.环境配置 1. 下载安装 python3 .(或者安装 Anaconda) 2. 安装requests和lxml 进入到 pip 目录,CMD --> C:\Python\Scripts,输 ...

  3. 打个响指Selenium自动化开启

    最近斗哥在朋友的影响下,接触了自动化测试工具中的一个项目:appium自动化测试脚本. appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额 ...

  4. CSS3禁止用户选中文字——user-select: none;

    需求:现在有一个需求是在移动端让你禁止用户选中文字,你会怎么做呢?如下图    解决方法:使用CSS3新增属性 user-select: none;   -webkit-user-select:non ...

  5. [Swift]LeetCode123. 买卖股票的最佳时机 III | Best Time to Buy and Sell Stock III

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  6. [Swift]LeetCode804. 唯一摩尔斯密码词 | Unique Morse Code Words

    International Morse Code defines a standard encoding where each letter is mapped to a series of dots ...

  7. JavaScript基础之值传递和引用传递

    js的值传递和引用(地址)传递 首先总述一下:js的5种基本数据类型 number,string,null,undefined,boolean 在赋值传递时是值传递,js的引用数据类型(object, ...

  8. 有点深度的聊聊JDK动态代理

    在接触SpringAOP的时候,大家一定会被这神奇的功能所折服,想知道其中的奥秘,底层到底是如何实现的.于是,大家会通过搜索引擎,知道了一个陌生的名词:动态代理,慢慢的又知道了动态代理有多种实现方式, ...

  9. CkEditor批量上传图片(java)

    CKEditor上传视频CKEditor批量上传图片flvplayer.swf播放器CKEditor整合包(v4.6.1) ------------------------------------ 最 ...

  10. asp.net core 系列 8 Razor框架路由(下)

    三.页面路由操作约定 接着上篇讲asp.net core 系列 7 Razor框架路由.在上篇继续第三节 "页面路由操作约定" 的最后一小节 AddPageRoute . 3.3. ...