文档章节

javascript let和const命令

chang江
 chang江
发布于 2017/05/04 14:57
字数 576
阅读 4
收藏 0
点赞 0
评论 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
房山
程序员
前端基础(二):变量声明的6种方法

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

老司机带你撸代码 ⋅ 06/09 ⋅ 0

【译】【nodeschool】【scope-chains-closures】作用域

作用域链与闭包工作 作用域,作用域链,闭包以及垃圾回收它们有一个共同点:那就是它们通常都是手动执行的。闭包实际上是如何工作的?垃圾回收在什么时候发生?作用域链到底是什么? 通过这次...

小草先森 ⋅ 05/14 ⋅ 0

实例:使用puppeteer headless方式抓取JS网页

google chrome团队出品的puppeteer 是依赖nodejs和chromium的自动化测试库,它的最大优点就是可以处理网页中的动态内容,如JavaScript,能够更好的模拟用户。 有些网站的反爬虫手段是将部分内...

caiyongji ⋅ 05/09 ⋅ 0

nodejs -- promise的返回

[javascript] view plain copy const a = async () => { return Sequelize.findAll({}) //这里返回一个promise,"aaaaa"也行 } const b= async ()=>{ const result =await a() ; //这样就能拿......

simpower ⋅ 05/13 ⋅ 0

一天掌握构建化工具Grunt、gulp、webpack(下)

1、gulp篇 中文主页: http://www.gulpjs.com.cn/ 上面那一篇博客我们已经讲述了如何创建工程以及安装所有的环境和准备,如果没有看到的话,链接在下面 https://my.oschina.net/mdxlcj/blog/1...

木九天 ⋅ 04/27 ⋅ 0

探索JavaScript函数式编程的来龙去脉

阿里巴巴前端工程师逸翾对JavaScript中的函数进行了详细讲解。首先谈及了环境作用域,其中说明了块级作用域和作用域链,接着解释了闭包的作用,最后重点分析了JavaScript的函数式编程,包括纯...

云迹九州 ⋅ 04/28 ⋅ 0

WEB前端学习:ES6块级作用域的概念详解

Web前端开发工程师是一个很新的职业,是从事Web前端开发工作的工程师。主要进行网站开发,优化,完善的工作。网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行...

web前端小辰 ⋅ 06/01 ⋅ 0

使用javascript一样可以做在线算法编程

基于node的readline一样可以使用标准流的输入输出 对于大学生在刚开始学习c ,c++, java的时候,写着hello word的代码,然后在命令框中输入输出; 基于很多算法的学习,在我短浅的认识中,身边...

Cc卿 ⋅ 05/25 ⋅ 0

webPack配置教程(一步步操作)

一: 新建一个文件,例如:webpack-demo 1.命令行:cd webpack-demo, npm init (一直回车,知道输入yes); 目录中出现package.json. 2.安装webpack npm i -D webpack 教程中使用的是最新版本. pac...

沉迷学习中 ⋅ 04/20 ⋅ 0

【前端工程师手册】JavaScript作用域拾遗

【前端工程师手册】JavaScript作用域拾遗 昨天总结了一些作用域的知识【前端工程师手册】JavaScript之作用域,但是发表完发现忘记了一些东西,今天拾个遗。 昨天说到了JavaScript中没有块级作...

推荐码发放 ⋅ 05/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部