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(){ ...
随机推荐
- 跟着大神学zookeeper分布式锁实现-----来自Ruthless
前几天分享了@Ruthless大神的Redis锁,发现和大家都学习了很多东西.因为分布式锁里面,最好的实现是zookeeper的分布式锁.所以在这里把实现方式和大家分享一下. zookeeper分布式 ...
- 如何用Word编辑参考文献------这是引用一位大师的
如何用Word编辑参考文献修改文献是一件非常痛苦的事情,虽然现在也有很多软件可以编排参考文献,其实word本身就可以. 采用合适的编辑方法会方便地做到整齐,规范,自动排序和交叉引用.1.以尾注的方式插 ...
- JS常见操作,日期操作,字符串操作,表单验证等
复制代码 //第一篇博文,希望大家多多支持 /***** BasePage.js 公共的 脚本文件 部分方法需引用jquery库 *****/ //#region 日期操作 //字符串转化为时间. f ...
- HIVE使用mysql作为外置数据库配置详情
Hive安装配置(mysql) 安装mysql hadoop$:sudo apt-get update hadoop$:sudo apt-get install mysql-server 启动mysq ...
- MySQL之数据库和表的基本操作(建立表、删除表、向表中添加字段)
介绍关于数据库和表的一些基本操作 添加字段.给字段添加注释 ); ) COMMENT '统一社会信用代码录入单位'; ,) 更改字段类型 ,) COMMENT '一头签收,@0或空不用,1必须'; 有 ...
- 关于C语言的第0次作业
1.你认为大学的学习生活.同学关系.师生关系应该是怎样的?请一个个展开描述. 我认为的大学学习生活是充实的,丰富多彩的,与高中快节奏.繁忙的生活有所不同.在上了大学我们都成熟了很多,懂得了包容与忍让, ...
- Beta Scrum Day 3
听说
- 敏捷开发每日报告--day5
1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285) Git链接:https://github.com/WHUSE2017/C-team 2 ...
- The sum of numbers form 0 to n.(20.9.2017)
#include <stdio.h> int main() { int a,b,sum; printf("输入一个数字: "); scanf("%d" ...
- python 操作MongoDB
安装MongoDB 启动数据库:安装完成指定数据库存放路径 mongod.exe --dbpath c:\data\db进入目录后运行mongo.exe 成功 创建数据库 > use mydb ...