EAScript 2016的新增语法(1)
1)let 语法,这个和var的声明类似,但是,只存在于其所在的代码块里。
举例:
var x=1
console.log(x)
{
let x=2
console.log(x)
} console.log(x)
输出值是什么?1 2 1,为啥?因为let x只存在于代码块里,和外面的x毫无关系。
var x=1
console.log(x)
{
x=2
console.log(x)
} console.log(x)
输出是1 2 2
因此,let这个东西,就很适合在for语句中使用,避免对其他代码块造成误伤。
同时,let语句,要先声明,再使用,否则,会报错。
再看下面的代码:
var x=1
console.log(x)
{
x=2
console.log(x)
let x
} console.log(x)
这个时候,会报错,说,x没有定义过!
let可以用来定义块级的作用域
在ES5的时候,只有全局作用域和函数作用域,这会带来很多不便。比如:
第一种情况,内层变量会覆盖外层变量:
    var tmp=new Date()
    function f(){
        console.log(tmp)
        if(false)
        {
            var tmp='hello wcf!'
        }
        console.log(tmp)
    }
    f()
这个时候,打印出来的是啥?
undefined
undefined
因为,tmp变量在函数里重新定义了,但是,又没有赋值,所以,是undefined。
再看代码:
    var tmp=new Date()
    function f(){
        console.log(tmp)
        if(true)
        {
            var tmp='hello wcf!'
        }
        console.log(tmp)
    }
    f()
undefined
hello wcf!
有了let,就可以类似的定义块级作用域:
    var tmp=new Date()
    function f(){
        console.log(tmp)
        if(true)
        {
            let tmp='hello wcf!'
            console.log(tmp)
        }
        console.log(tmp)
    }
    f()
EAScript 2016的新增语法(1)的更多相关文章
- ECMAScript简介以及es6新增语法
		ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的 ... 
- 面向对象编程-终结篇 es6新增语法
		各位,各位,终于把js完成了一个段落了,这次的章节一过我还没确定下面要学的内容可能是vue也可能是前后端交互,但无论是哪个都挺兴奋的,因为面临着终于可以做点看得过去的大点的案例项目了,先憋住激动地情绪 ... 
- SQL Server 2016  Alwayson新增功能
		标签:SQL SERVER/MSSQL SERVER/数据库/DBA/ 概述 SQLServer2016发布版本到现在已有一年多的时间了,目前最新的稳定版本是SP1版本.接下来就开看看2016在Alw ... 
- SQL Server 2012/2016/2017 新增函数
		/************************************************************** SQL Server 2012 新增的函数 ************** ... 
- ES6新增语法和内置对象(let,const, Array/String/Set 扩展方法(解构赋值,箭头函数,剩余参数))
		1.let ES6中新增的用于声明变量的关键字. let 声明的变量只在所处于的块级有效. 注意:使用 let 关键字声明的变量才具有块级作用域,var 关键字是不具备这个特点的. 1. 防止循环变量 ... 
- 【ES6新增语法详述】
		目录 1. 变量的定义 let const 2. 模版字符串 3. 数据解构 4. 函数扩展 设置默认值 箭头函数 5. 类的定义 class 6. 对象的单体模式 "@ ES6新增了关于变 ... 
- ES6新增语法(一)——let、const、var的区别
		ES6简介 ES6是ECMAScript 6.0的简称,是javascript语言的下一代标准,已经在2015年6月正式发布上线.目的就是为了统一javascript的语法标准,可以用来开发大型应用程 ... 
- 复习——高级语法对象原型,es5新增语法
		今天的开始进入了js的高级语法 我马上也要复习完了,之前学到闭包递归,就回去复习去了,复都复习这么久而且,复习的过程真的比学知识的过程难熬的多,只不过终于要复习完了,再来点es6的新语法马上就要步入v ... 
- SQL Server 2012 新增语法
		--连接两个字符串. CONCAT(TelePhone,UserName,' : ',LoginVCode) FROM [dbo].[TB_NUsers] --SQL Server2012新增了两个逻 ... 
随机推荐
- QQ互联登陆的最简洁代码
			<?php/** * http://wiki.open.qq.com/wiki/ * Date: 14-6-18 * Time: 下午18:04 */class Model_Login_QqCo ... 
- 关于<!DOCTYPE html>的学习(转)
			DOCTYPE是对Document type的缩写,说明用XHTML或者HTML是什么版本的.必须出现在<html>标签的前面,不需要关闭标签. <!DOCTYPE>声明不是标 ... 
- 【转】GOOGLE-PROTOBUF与FLATBUFFERS数据的序列化和反序列化
			转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/unity3d-game/1607.html 关于Protobuf 通过本文的转载和分享的相关链接,足够 ... 
- Flink之状态之savepoint
			1.总览 savepoints是外部存储的自包含的checkpoints,可以用来stop and resume,或者程序升级.savepoints利用checkpointing机制来创建流式作业的状 ... 
- ArcGis下的叠加分析
			 1矢量与矢量叠加的话就用ToolBox里有Overlay: 2如果是矢量和栅格叠加的话用Spatial analysis模块中的 zonal statistics: 3还有就是栅格与栅格的叠加S ... 
- mac 倍速播放
			Mac的倍速播放,使用工具播放是quick time player,使用方式是,按住 “option” + “>>” 即可调整倍数: 
- Reabble.com-KindleRSS新闻杂志订阅
			Reabble.com-KindleRSS新闻杂志订阅 TreeInsertions Tomcat部署war包后,运行时出现如下错误 RectangularCovering Reabble.com-K ... 
- 8086汇编语言 调用声卡播放wav文件(sound blaster)
			开更 大概最后做了一个能播放无损音乐(无压缩.不需解码)的播放器 原理是基于dosbox的模拟声卡,通过硬件之间的相互通讯做到的 关于详细内容接下来再讲. 一.从dosbox入手 我们知道cpu可以直 ... 
- mysql5.7.22以上版本忘记密码时这样修改
			1.关闭mysql服务 net stop mysql 2.找到mysql安装路径找到 my.ini 打开在 [mysqld] 下添加 skip-grant-tables 跳过密码校验 3.登陆mysq ... 
- visio2013安装提示找不到Office.zh_cn\officeMUI.mis officemui.xml(转)
			windoes10 已经安装office2013后,想安装Visio2013,报错如题所示.解决方法我采用的是方法二:解压缩office2013的ISO包,解压缩Visio2013的ISO包,安装Vi ... 
