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 ...
随机推荐
- 关于一款c++贪吃蛇小游戏
好久不资瓷了. 首先声明,这个东西为转载(窝不会写这个.) 原作者:洛谷dalaoWZK20080124. 代码如下: #include <iostream> #include <W ...
- mysql增删查改练习
建表 班级表 create table class( cid int auto_increment unique, caption varchar(32) not null default '' )c ...
- pycharm运行程序,总是出现IPthony界面(IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help. PyDev console: using IPython 6.2.1)
解决方式如下: 取消即可.
- MySQL数据优化总结-查询备忘录
一.优化分类 二.测试数据样例 参考mysql官方的sakina数据库. 三.使用mysql慢查询日志对有效率问题的sql进行监控 第一个,开启慢查询日志.第二个,慢查询日志存储位置.第三个,没有使用 ...
- 喜大普奔!.NET界面控件DevExpress v19.2发布,快来下载体验
DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...
- 第十一章 前端开发-bootstrap
11.5.0 bootstrap 11.5.1 bootstrap的介绍和响应式 http://book.luffycity.com/python-book/95-bootstrap/951-boot ...
- jenkins发送jemter邮件附件格式配置
原文:https://www.cnblogs.com/chenchen-tester/p/6930200.html build.xml <?xml version="1.0" ...
- Web上传超大文件解决方案
文件上传下载,与传统的方式不同,这里能够上传和下载10G以上的文件.而且支持断点续传. 通常情况下,我们在网站上面下载的时候都是单个文件下载,但是在实际的业务场景中,我们经常会遇到客户需要批量下载的场 ...
- The Semantics of Constructors(拷贝构造函数之编译背后的行为)
本文是 Inside The C++ Object Model's Chapter 2 的部分读书笔记. 有三种情况,需要拷贝构造函数: 1)object直接为另外一个object的初始值 2)ob ...
- 错误/异常:org.hibernate.MappingException: Unknown entity: com.shore.entity.Student 的解决方法
1.错误/异常视图 错误/异常描述:Hibernate配置文件 映射异常,不明实体类Student(org.hibernate.MappingException: Unknown entity: co ...