文档章节

javascript let和const命令

chang江
 chang江
发布于 2017/05/04 14:57
字数 576
阅读 4
收藏 0

 第一次写博客,直接上代码了。

//{} 花括号是代码块  let命令只在代码块内有效
'use strict'
{
    let a = 10;
	var b = 20;
	console.log(a)	//10
	console.log(b)	//20
}
console.log(b)	//20
console.log(a)	//ReferenceError 引用错误
'use strict'

//let 只在循环体内有效 如果在循环体外引用就会报错
//如果是var会在全局范围内有效

for(let i=0;i<10;i++){}
console.log(i) //ReferenceError  ruai fe run ci

//for循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个子作用域
for(let i = 0 ; i < 3 ; i++){
	let i = "abc";
	console.log(i)
}
//abc
//abc
//abc
'use strict'
//var命令会发生"变量提升"现象,即变量可以在声明之前使用,值为undefined

//let不存在变量提升
//为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错

//var
console.log(foo);  //undefined
var foo="2"

//let
console.log(bar); //报错:ReferenceError  引用错误
let bar="1"
'use strict'
//暂时性的死区

//1:只要在块级作用域内存在let命令,它所声明的变量就绑定到了这个区域,不在受外部影响
var t = 123;
if(true){
	t = "abc";	//ReferenceError
	let t;
}
//上面代码中存在全局变量t,但是块级作用域内又声明了一个局部变量t,导致后者绑定这个块级作用域


function bar(x = y, y = 2){
	return [ x, y]
}
bar(); //ReferenceError :y is not defined
//调用bar函数报错,是因为参数x默认值等于另一个参数,而此时y还没有声明,属于死区,如果y的默认值是x就不会报错了
  1. const的作用域和let命令相同,只在声明所在的作用域内有效
  2. const声明一个只读的常量。一旦声明,常量的值就不会改变(const的值也不是不可变得)

const的值也不是不可变得,而是变量指向的内存不可变。

  1. 简单类型(数值,字符串,布尔)的值保存在变量指向的内存,等于常量
  2. 符合类型(数组和对象)变量指向的内存,保存的是一个指针,所以数据结构的变化是不受控制的

© 著作权归作者所有

共有 人打赏支持
chang江
粉丝 0
博文 3
码字总数 1620
作品 0
房山
程序员
私信 提问
ES6中let 和 const 的新特性

在javascript中,我们都知道使用var来声明变量。javascript是函数级作用域,函数内可以访问函数外的变量,函数外不能访问函数内的变量。 ECMAScript 6 是 JavaScript 语言教程,全面介绍 EC...

peakedness丶
11/18
0
0
ECMAScript 6教程 (一)

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文连接,博客地址为 http://www.cnblogs.com/jasonnode/ 。该系列课程是汇智网 整理编...

笔阁
2015/07/20
0
0
ES6、ES7、ES8特性-学习提炼总结(一)

ES6 ECMAScript 6.0,简称ES6是JavaScript语言的下一代标准,在2015年6月发布。目的是让JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 Babel转码器 Babel是一个广泛使...

永远保留内心的简单和单纯
11/22
0
0
Async/Await是这样简化JavaScript代码的

译者按: 在Async/Await替代Promise的6个理由中,我们比较了两种不同的异步编程方法:Async/Await和Promise,这篇博客将通过示例代码介绍Async/Await是如何简化JavaScript代码的。 原文: ASY...

Fundebug
2017/10/17
0
0
JavaScript机器学习之KNN算法

译者按: 机器学习原来很简单啊,不妨动手试试! 原文: Machine Learning with JavaScript : Part 2 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译...

Fundebug
2017/07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

集成测试——Spring TestContext框架支持详细解说

概述 集成测试是在单元测试之上,通常是将一个或多个已进行过单元测试的组件组合起来完成的,即集成测试中一般不会出现Mock对象,都是实实在在的真实实现。 对于单元测试,如前边在进行数据访...

呐呐丶嘿
3分钟前
0
0
爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250

所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中。 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250 1)确定目标网...

linjin200
3分钟前
0
0
ES6私有变量的实现

1. 约定 实现 class Example { constructor() { this._private = 'private'; } getName() { return this._private }}var ex = new Example();console.log(ex.getName()); // ......

peakedness丶
6分钟前
0
0
SQLServer AlwaysOn在阿里云的前世今生

缘起 早在2015年的时候,随着阿里云业务突飞猛进的发展,SQLServer业务也积累了大批忠实客户,其中一些体量较大的客户在类似大促的业务高峰时RDS的单机规格(规格是按照 内存CPUIOPS 一定比例...

阿里云官方博客
10分钟前
0
0
绑定域名到 GitHub Pages

GitHub Pages 绑定来自阿里云的域名 简介 我在阿里云上注册了一个新域名:yuanzb.com,我已经在GitHub Pages上建立了自己的博客:http://yuanzb.github.io/yuanzb/。现在我希望将yuanzb.com映...

临江仙卜算子
16分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部