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 ...
随机推荐
- 使用jmeter发送put请求的三种方式
之前在前公司使用jmeter调试接口时,由于都是get和post请求,所以一直是顺风顺水的,毫无阻拦在短时间内调试完所有接口. 但是呢,在换到新公司后,发现接口请求是多式多样的,get.post必须有 ...
- pycharm 怎么能像在命令行中输入参数进行调试
pycharm中配置main参数 Run->Edit Configurations->Script Parames 把需要在xxx.py A B C 后面的参数输入到如下位置. 否则会报错 ...
- 报表开发工具!DevExpress Reporting v19.1:WPF/Web平台报表
行业领先的.NET界面控件DevExpress Reporting全新发布了v19.1版本,本文主要为大家介绍WPF.Web平台中DevExpress Reporting发布的一些新功能及增强部分功能 ...
- 【JZOJ5801】【2018.8.12省选模拟】circular
题目大意 分析 把环拆开 线段其实就是区间 对于每个区间,向在TA后面并且b_i最小的区间连边, 然后从每个区间(ai,bi)开始,在保证跳到的区间(aj,bj),bj<=ai+m的情况下向后倍 ...
- html上标与下标应用
HTML 标签应用示例: <html> <head> <meta http-equiv="Content-Type" content="te ...
- 《剑指offer》算法题第七天
今日题目: 复杂链表的复制 二叉搜索树与双向链表 序列化二叉树 字符串的排序 1.复杂链表的复制 题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向 ...
- mac 强行关掉php
sudo pkill -INT -o php-fpm//重启php sudo php-fpm //mac brew安装的php可以使用这个开启brew services start homebrew/ ...
- 数据分析师面经一(bk)
2019年第一个数据分析面试: 先说一下心理感受,在BOSS多次看到这个岗位了,但是 呢一直没勇气去投这个岗位.首先毕竟是一个知名企业一万+人的公司,心里多少底气不足(小公司待习惯了吧),而且看岗位要 ...
- 前端 Jenkins 自动化部署
这两天折腾了一下 Jenkins 持续集成,由于公司使用自己搭建的 svn 服务器来进行代码管理,因此这里 Jenkins 是针对 svn 服务器来进行的配置,Git 配置基本一致,后面也介绍了下针对 ...
- python-无联网情况下安装skt-learn
请从上到下安装 numpy importlib pytz python-dateutil pandas scipy pasty statemodels backports.functools_lru_ ...