当前位置: 首页 > news >正文

Es6初级入门(一)

ES6与JS的关系

es6 是js的新一套表标准,已经于2015年6月正式发布。它的目标是使js可以编写复杂的大型应用程序,成为企业级开发语言。 由此可见ECMAScript 是为了JavaScript制定的一套规格标准。

新增的let命令与const命令

let命令

  • let命令类似于var命令,两者的作用都是声明变量。区别在于var声明的变量都是作用在全局的变量(无论在哪生命都会默认提升),
  • let声明的变量只作用于let所在的代码块中。(个人理解一个全局的变量,一个是当前作用域的变量)。
  • let声明的变量制作用在当前的作用域不会影响它包含的作用域声明的相同变量。

例子

for(let i=0;i<3;i++){
	let i = 'aaa'
	console.log(i)
} // aaa aaa aaa 输出三次 
复制代码
  • let命令不存在变量提升,在什么作用域声明只有在声明这个变量之后才能使用这个变量。否则会报错

例子

console.log(a) //Uncaught ReferenceError: a is not defined
let a = 1 
复制代码
  • 只要在块级作用域中使用了let 命令声明变量,变量就会绑定当前的块级作用域不会受到外部声明的影响

例子

var test = 123
demoFunction = e=>{
	test = 456
	let test;
}
demoFunction() // Uncaught ReferenceError: test is not defined 
//同样的会报错报这个变量没有被找到因为在变量赋值后声明的(会形成暂时性死区)
复制代码
  • 在同一个作用域中不要重复的声明同一个变量会报错的

const命令

  • const 命令用来声明一个只读的常量,常量的值是不能改变的。一旦改变常量的值就会报错 const声明的常量不能改变其值,这就意味着,const常量一旦声明之后就必须立即初始化。

例子

const aa = 123
aa = 456 //Uncaught TypeError: Assignment to constant variable.
const b //Uncaught SyntaxError: Missing initializer in const declaration
复制代码
  • const命令与let命令相同都只是在声明所在的块级作用域中有效(在作用域外使用变量会报错与let的相同)
  • const命令本质上是变量只想的那个内存地址不能被改动。对于符合类型数据(主要是对象和数组)而言, 变量指向的内存地址保存只是一个指针,const只能保证这个指针是固定的,(指针内的数据是可以操作改变的) 因此声明一个常量变量时要考虑清楚。

块级作用域

es6之前没有块级作用域只有全局作用域和函数作用域。这就导致了好多地方如果不注意的话变量会被新声明的 变量覆盖掉从而报错。

  • es6中允许了在块级作用域中声明函数
  • 函数声明类似于var,即声明函数后会将函数提升到全局作用域或函数作用域的头部(这些只在支持es6的浏览器中才会生效)
  • es6中声明函数尽量写成函数表达式的形式

例子

{
	let  a  =’ secret  ’;
	let  f  =  function  () {
	return  a ;
	}
}
复制代码

(暂时不对块级作用域多做描述后面会更新对这些的理解)

相关文章:

  • thinkphp+redis实现秒杀,缓存等功能
  • (JS基础)String 类型
  • django2中表单的使用二
  • css学习_css布局案例
  • jsp简单介绍
  • python inspect模块
  • 通过SQL脚本来查询SQLServer 中主外键关系
  • python的pandas库学习笔记
  • 最全的前端模块化方案
  • 深入浅出了解“装箱与拆箱”
  • 力扣算法题—091解码
  • 如何利用在线画图网站绘制流程图
  • 软件原型设计工具Axure
  • 数据脱敏(一)--基础知识
  • linux-高并发与负载均衡-lvs-DR模型试验
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • Akka系列(七):Actor持久化之Akka persistence
  • Android系统模拟器绘制实现概述
  • Apache的基本使用
  • bootstrap创建登录注册页面
  • extjs4学习之配置
  • HashMap剖析之内部结构
  • Js基础知识(四) - js运行原理与机制
  • React 快速上手 - 07 前端路由 react-router
  • 大快搜索数据爬虫技术实例安装教学篇
  • 回顾 Swift 多平台移植进度 #2
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 前端面试题总结
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 一、python与pycharm的安装
  • raise 与 raise ... from 的区别
  • 仓管云——企业云erp功能有哪些?
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​学习一下,什么是预包装食品?​
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # Panda3d 碰撞检测系统介绍
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #Linux(帮助手册)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)斐波那契Fabonacci函数
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (强烈推荐)移动端音视频从零到上手(下)
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET delegate 委托 、 Event 事件
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET中使用Redis (二)