ES6 new syntax of let and const (one)
variable declarations : let, const,and block scope
why we redefine the way about declarations?
function scope
var price = 10; //global declaration
function showPrice(){
var price = 12; //local declaration using var
console.log(price); //12
}
showPrice();
console.log(price); //10
The next we can use IIFE to check var variable;
var price = 10;
(function(){
var price = 12;
console.log(price); //12
})();
console.log(price); //10
IIFE: Immediately Invoked Function Expression,意为立即调用的函数表达式,也就是说,声明函数的同时立即调用这个函数。
How to change the scope of var variable?
var price = 10;
if(price){
price = 12;
console.log(price);
}
console.log(price);
The examples demonstrates _ of var.
The example make me confusing.
var price = 10;
function showPrice(){
var price = 12;
console.log('price',price);
}
showPrice();
console.log('showPrice',showPrice());
console.log(price);
the resule is
price 12
price 12
showPrice undefined
10
why have two price?
we add block scope like let and const to solve the problems.
what is block scope?
block scoping means that new scope is created between a pair of { }.
let nbr = 12;
{
let nbr = 40;
}
console.log(nbr)
1.var is bound to function scope
2.let and const are block scope
How to install preview about markdown in sublime?
1.we can use package install to install our plugins
.first use keyboard open the package istall
command+shift+p
IIFE
var price = 12;
if(price){
var price = 10;
console.log(price);
}
console.log(price);
IIFE tell us that the var declarations are bound to the function scope and does not create block scope.
var is bound to function scope, let and const are block scope.
let value = 42;
{
let value = 1000;
}
console.log(value);
let varible only read in the block scope.
const
const declarations is a immutable varible.
const value = 50;
console.log(value);
value = 1000;
const value = 50;
console.log(value);
let value = 1000;
varible hoisting
console.log(host);
var host = 89;
In my heart,it may be console 89;Actualy it is undefiend;
beacuse it is become next code in our browser
var host;
console.log(host);
var host = 89;
If you use let to declate a varible,it is err:
console.log(host);
let host =100;
I'm confusing!
TDZ(Temporal Dead Zone)
You are accessing a varible that's been declared but not yet initialized.
let data = true;
if(true){
console.log(data);
let data;
}
console.log(data);
It's print the value
undefiend
true;
But in the book ,author told me that print
ReferenceError
true
let data = true;
if(true){ //Enter new scope,TDZ starts
//uninitialized bindling for data is created
console.log(data); //ReferenceError
let data;//TDZ ends,'data' is initialized with undefined
}
console.log(data); //true
TDZs helps us ensure that a variable in runtime always have correct value.
if(ture){
console.log(typeof anUndeclaredVariable);
console.log(typeof nrandom);
let random;
}
It is a good practice to always make varible declarations at the top of your scope.
This check is also useful for conditionally creating global varibles using var.
You can check if a global variable exsits by doing something like this:
if(typeof globalVariable === 'undefined'){
var globalVariable = {...};
}
const in object
You can add a property to object of const declaration but you cannot assign
a different value to object.
const obj = {};
obj.key = 42;
console.log(obj.key);
obj = {};
sure,if you really want to you could make the value itself immutable by freezing it.
const obj = Object.freeze({});
obj.key = 42;
console.log(obj);
Object.freeze() is shallow.
ES6 new syntax of let and const (one)的更多相关文章
- JavaScript学习系列5 ---ES6中的var, let 和const
我们都知道JavaScript中的var,在本系列的 JavaScript学习系列2一JavaScript中的变量作用域 中,我们详细阐述了var声明的变量的作用域 文章中提到,JavaScript中 ...
- ES6中不得不说的关键字const
上一节讲了let关键字,它是用来声明一个变量,只在块级作用域起作用.这一节我们来学习ES6新增的另一个关键字const. const 的作用 const是constant(常量)的缩写,const和 ...
- es6学习笔记1 --let以及const
let语句的基本用法: 1.let声明的变量为块级作用域,只在最近的{}里面有效,如果在外部引用就会报错. { let a = 10; var b = "hello" } ale ...
- ES6新特性:let和const的使用
(声明, 本文的所有代码均在node的最新稳定版本v4.4.3中执行的, 如果在浏览器中执行请把JS的运行环境提升为ES6) 以前一直用var定义变量, 现在有了两种新的定义变量的方式, 1: let ...
- es6重点笔记:let,const
一,let 先看代码: var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i) }; } a ...
- ES6系列之变量声明let const
ES6也出来好久了,最近闲来无事就想着吧es6做一个系统的总结,巩固自己的知识,丰富一下博客. 为什么叫ES6 实际上是ECMA的一个打的标准,这个标准是在2015年6月发布的,正式的名字实际是es2 ...
- ES6中声明变量 let和const特点
在ES6中我们有两种定义变量的方式:let const let特点: 1.let定义时不会进行变量声明提升 2.变量不允许被重复定义 3.变量不可以被删除 4.在for循环当中用let定义i 循 ...
- es6 入坑笔记(一)---let,const,解构,字符串模板
let 全面取代var 大概相似于C++的定义,一个变量必须得先定义后使用,没有预编译 注意let的作用域,一个{}就是一个作用域,上述规则须在一个作用于内 坑:for(let i =0;i < ...
- ES6基本语法之let和const
1.var可以重复声明 var a = 12; var a = 5; alert(a) //5 2.var无法限制修改 如:PI = 3.1415: 3.var没有块级作用域 { } 像: if(){ ...
随机推荐
- 4.Apache POI使用详解
一.POI结构与常用类 1.POI介绍 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人 ...
- 实验楼 -- (Linux)
1. 允许用户SSH登陆 # 打开ssh配置文件, 一般在/etc/ssh/sshd_config sudo vim /etc/ssh/sshd_config # 在文件最后添加: # 其中shiya ...
- 测试对bug如何分析和定位
如何去区分一个功能测试工程师的水平高和低? 可以从很多个方面去检查,比如测试的思路, 比如测试用例的覆盖度?,比如测试出bug是否能够定位到根因? 上面说的各个方面都很合理,那我们平常如何如更深的定位 ...
- 使用Java客户端操作elasticsearch
Java REST客户端有两种风格: Java低级别REST客户端(Java Low Level REST Client,以后都简称低级客户端算了,难得码字):Elasticsearch的官方low- ...
- [福大软工] W班 软工实践原型设计—成绩公布
作业地址 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/909 作业要求 详见作业地址 存在问题 1. ...
- 敏捷冲刺每日报告——Day1
1.情况简述 Alpha阶段第一次Scrum Meeting 敏捷开发起止时间 2017.10.25 00:00 -- 2017.10.26 00:00 讨论时间地点 2017.10.25晚9:30, ...
- Beta版本展示
Beta版本展示 开发团队:MyGod 团队成员:程环宇 张芷祎 王田路 张宇光 王婷婷 源码地址:https://github.com/WHUSE2017/MyGod MyGod团队项目的目标: 让 ...
- 项目Alpha冲刺Day12
一.会议照片 二.项目进展 1.今日安排 修复全局的日期转换问题,完成用户所有相关的模块,对全局的异常处理做优化.其他模块进行一部分实现. 2.问题困难 全局异常处理后发现没有进行按照链进行下去,造成 ...
- 201621123057 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...
- Flask 文件和流
当我们要往客户端发送大量的数据比较好的方式是使用流,通过流的方式来将响应内容发送给客户端,实现文件的上传功能,以及如何获取上传后的文件. 响应流的生成 Flask响应流的实现原理就是通过Python的 ...