ES5与ES6常用语法教程之 ②解构语法糖、声明变量异同
js常用语法系列教程如下
- es5与es6常用语法教程(1)
- es5与es6常用语法教程(2)
- es5与es6常用语法教程(3)
- es5与es6常用语法教程(4)
- es5与es6常用语法教程(5)
- es5与es6常用语法教程(6)
- es5与es6常用语法教程(7)
这部分教程我们主要讲解以下几个常用语法
- 如何创建对象,如何给对象添加属性和方法
- var 与 let 申明变量时的异同点
- 解构对象
- 解构数组
- 解构函数参数
如何创建对象,如何给对象添加属性和方法
componentDidMount() { // 创建一个小明对象
let xiaoming = {} // 给小明这个对象添加属于他的属性
xiaoming.name = 'XiaoMing'
xiaoming.age = 20
xiaoming.height = 180 // 给小明这个对象添加属于他的方法
xiaoming.eat = () => {console.log('eat')}
xiaoming.learn = () => {console.log('learn RN')} // 获取小明的名字
console.log(xiaoming.name) // 调用小明自己的方法
xiaoming.eat()
xiaoming.learn() // 打印小明对象看看效果吧
console.log(xiaoming)
}
日志

var 与 let 申明变量时的区别
- 只申明变量不赋值,表现相同
(function() {
var varVariable
let letVariable
console.log(varVariable) // 输出 undefined
console.log(letVariable) // 输出 undefined
}())
- 使用未声明的变量时,表现相同
(function() {
console.log(varTest) // 输出 undefined
console.log(letTest) // 输出 undefined var varTest = 'varTest'
let letTest = 'varTest'
}())
- 重复声明同一个变量时,表现不同
(function() { var varTest = 'test var OK.'
let letTest = 'test let OK.' var varTest = 'varTest changed.'
let letTest = 'letTest changed.' // 直接报错:SyntaxError:Identifier 'letTest' has already been declared console.log(varTest) // 输出 varTest changed,覆盖掉了之前的值:test
// var OK.
console.log(letTest)
}())
- 变量作用域,表现不同
var xx const test = () => {
var aa // 声明一
let bb //声明二
this.cc //声明三 // 声明一局部代码块
{
let dd //声明四
}
}
区别
- let 声明的变量作用域为某个代码块。而代码块的长度可大可小。也就是说,当按声明二的方式声明一个变量时,该变量的作用范围于为整个function语句。当按声明四方式声明一个变量时,该变量的作用范围为局部的代码块。
- var 声明的变量作用域为整个函数体(当按声明一的方式声明变量时);当var变量声明在函数外,该var变量的作用域为整个js文件周期(全局作用域)。
那么,用this声明的变量呢?
- 简单地说,用this声明的变量作用域也是全局的。如果实例化test函数 var p=new test() 那么用p能访问test函数内的哪些变量呢?答案是只有cc 。实际上this声明的变量是作用于上下文的。
任何函数中的this代表调用该函数的对象,如果没有任何对象调用该函数(直接让函数执行),那么就相当于是window对象调用该函数执行(其中的this就代表window对象)
var 与 let 总结
- 使用 var 申明的变量,可以重复申明,只是后申明的会覆盖前面申明的
- 使用 let 申明的变量,不能够重复申明,重复申明直接报错
- 使用 let 声明变量,该变量的作用范围限于声明它的代码块中
- 如果未在 var \ let 语句中初始化变量,则将自动为其分配 JavaScript 值 undefined
解构对象
const breakfast = () => {
return {dessert: 'ES5与ES6常用语法教程之 ②解构语法糖、声明变量异同的更多相关文章
- 前端笔记之ES678&Webpack&Babel(上)初识ES678&Babel&let和const&解构&语法
一.ES版本简介和调试运行方法 1.1 ECMAScript简介 MDN手册:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript JavaS ...
- 深入理解ES6(二)(解构赋值)
变量的解构赋值 (1) 数组的解构赋值 1.基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring ). 只要等号两边的模式相同,左边的变量 ...
- ES6笔记(3)-- 解构赋值
系列文章 -- ES6笔记系列 解构赋值,即对某种结构进行解析,然后将解析出来的值赋值给相关的变量,常见的有数组.对象.字符串的解构赋值等 一.数组的解构赋值 function ids() { ret ...
- ES5与ES6常用语法教程之 ④展开运算符...在数组和对象中的作用
展开操作符(spread) 展开运算符(spread operator)允许一个表达式在某处展开.展开运算符在多个参数(用于函数调用)或多个元素(用于数组字面量)或者多个变量(用于解构赋值)的地方可以 ...
- ES5与ES6常用语法教程之 ①函数写法、创建对象、导入导出模块方式
函数写法区别 计算a, b两个数字之和,有返回值 es5 写法 function add(a, b) { return a + b; } es6 写法(箭头函数) let add = (a, b) = ...
- 深入浅出ES6(六):解构 Destructuring
作者 Jason Orendorff github主页 https://github.com/jorendorff 什么是解构赋值? 解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性 ...
- 【系统学习ES6】第二节:解构赋值
[系统学习ES6] 本专题旨在对ES6的常用技术点进行系统性梳理,帮助大家对其有更好的掌握,希望大家有所收获. ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.解构是一种打 ...
- ES6新特性:利用解构赋值 (destructuring assignment), 简化代码
本文的Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : 解构赋值是一种表达式, 利用这种新语法, 可以直接从数组或者对象中快速提取值 赋值给不 ...
- es6基础系列三:解构赋值
解构就是ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值(只能用于数组,对象或迭代器).如果解构不成功,则等于undefined,但不能赋值为undefined和null,因为undefi ...
随机推荐
- 一道经典JS面试题
超过80%的候选人对下面这道JS面试题的回答情况连及格都达不到.这究竟是怎样神奇的一道JS面试题?他考察了候选人的哪些能力?对正在读本文的你有什么启示? 不起眼的开始 招聘前端工程师,尤其是中高级前端 ...
- 编译gpu集群版caffe
在这个版本安装之前,要先装好opencv,openmpi等. 下载地址:https://github.com/yjxiong/caffe.git 我的opencv是2.4.12版本 编译是用了: cm ...
- yum和rpm工具使用
rpm命令 rpm -ivh package 安装 rpm -e package 卸载 rpm -Uvh 升级,如果已安装老版本,则升级;如果没安装,则直接安装 rpm -Fvh 升级,如果已安装老版 ...
- 伪元素::before和::after的详细介绍
㈠什么是伪元素? 不同的解释: ⑴伪元素是创造关于文档语言能够指定的文档树之外的抽象.例如文档语言不能提供访问元素内容第一字或者第一行的机制.伪元素允许设计师引用它们,否则这是难以办到的.伪元素还提供 ...
- SQL Server、SSMS的单独安装
喜欢尝新版本的,可以单独安装数据库.界面管理软件. 不喜欢折腾的可以只安装SQL Server(全选安装,自带界面管理工具) 1.SQL Server,下载地址https://www.microsof ...
- maven的概念-02
1.仓库 仓库分为两类: 1) 本地仓库 ->当前电脑上的maven仓库: 本地仓库的默认目录: ${user.home}/.m2/repository ...
- 51 Nod1042 数字0到9的数量
1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19 ...
- 嵌入式实时操作系统VxWorks入门――开发环境构建[转]
VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通 信.军事.航空.航天等高精尖技术及实时性 ...
- delphi通过url下载文件
procedure TfrmEngineerImport.btnDownloadClick(Sender: TObject);var vsql, SourceFile, DestFile, filen ...
- np.max() 和 np.maximum()的区别
1.np.max(a, axis=None, out=None, keepdims=False) 求序列的最值 最少接受一个参数 axis默认为axis=0即列向,如果axis=1即横向 ex: &g ...