文档章节

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
房山
程序员
ECMAScript 6教程 (一)

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

笔阁
2015/07/20
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
前端基础(二):变量声明的6种方法

字数:2869 阅读时间:10分钟 最新的ECMAScript规范中,变量声明有var、function、let、const、import、class六种方法。 var 语法: var varname [= value1 [, vaname1[,valname2 ...]]]; 对...

老司机带你撸代码
06/09
0
0
5分钟掌握var,let和const异同

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://dzone.com/articles/javascript-difference-between-var-let-and-const-...

葡萄城技术团队
09/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【源码分析】面试问烂的equals和各种字符串、Integer比较

今天在空闲时间聊天时发现,面试题中的equals问题,以及String、Integer等的判等问题还是讨论的比较激烈而且混乱。。。(滑稽) 其实网上有非常多关于这种面试题的文章或者博客,其实多去看看就...

LinkedBear
9分钟前
3
0
jvm汇总

https://www.toutiao.com/i6490796229067276814/ https://tech.meituan.com/jvm_optimize.html

tantexian
10分钟前
0
0
限制MongoDB使用内存大小

限制MongoDB使用内存大小 0 收藏(6)因为MongoDB的内存是系统的虚拟内存管理的,MongoDB并不干涉内存管理工作,这样虽然可以简化Mongo的工作,但同时Mongo的内存使用是没法控制的。 真的没法控...

Airship
11分钟前
0
0
“赋能开发者”高峰论坛暨西安葡萄城30周年庆典隆重举办

 2018 年 10 月 18 日,“赋能开发者”高峰论坛暨西安葡萄城 30 周年庆典在古城西安隆重举办。   此次论坛由西安葡萄城信息技术有限公司(以下简称“西安葡萄城”)主办。作为软件开发行业...

葡萄城技术团队
12分钟前
0
0
聊聊storm的reportError

序 本文主要研究一下storm的reportError IErrorReporter storm-2.0.0/storm-client/src/jvm/org/apache/storm/task/IErrorReporter.java public interface IErrorReporter { void report......

go4it
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部