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 ...
随机推荐
- Missing artifact com.sun.jmx:jmxri:jar:1.2.1的解决方法
maven项目添加log4j-1.2.15依赖出现Missing artifact com.sun.jmx:jmxri:jar:1.2.1错误 解决方法一:修改log4j.jar的版本为1.2.16或 ...
- jmeter-请求头需要URIEncode编译时
使用函数 ${__urldecode()} 例如 :${__urldecode(%E4%BB%93%E5%BA%93)}${__urldecode(${参数变量})}
- isset和empty以及is_null区别
2.empty,isset首先都会检查变量是否存在,然后对变量值进行检测.而is_null 和 “参数本身”只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误! 3.isset():仅 ...
- CF990G GCD Counting 点分治+容斥+暴力
只想出来 $O(nlogn\times 160)$ 的复杂度,没想到还能过~ Code: #include <cstdio> #include <vector> #includ ...
- codeforces643D
阿狸的基环内向树森林 Background 当阿狸醒来的时候,发现自己处在基环内向森林的深处,阿狸渴望离开这个乌烟瘴气的地方.“明天还有与桃子的约会呢”,阿狸一边走一边说,“可是,这个森林的出口在哪儿 ...
- Codeforces Gym Joyride(分层图,dijkstra)
题意:有一张图,每条边有一个边权t表示经过所花时间,每个点有两个权t.p,分别表示经过该点所花时间和所花费用,要求找一条路径,从点1出发再回到点1,所花时间恰好为x且费用最小,输出其费用,找不到则输出 ...
- Jmeter -- 脚本录制
步骤如下: 1. 添加http代理服务器(Add -> Non-TestElement -> HTTP(S)Test Script Recorder) 2. 对http代理进行配置,如下图 ...
- brute爆破
0X01明文传输的表单爆破用户名和密码 不存在任何加密 直接爆破即可 当不存在用户名时: 当存在用户名时,密码错误: 这里由于靶场关了 所以我们用dvwa演示 但是dvwa没有以上的差别 所以我们默认 ...
- BZOJ1706奶牛接力跑
这个东西思路还是不错的. 解法就是把矩阵幂的加法改成取min,乘法改成加法就好,和floyed是一样的.这样的话,矩阵操作一次就相当于松弛了一次最短路. 建矩阵的过程也比较简单,可以离散化,当然下面有 ...
- 如何阅读《JavaScript高级程序设计》(一)
题外话 最近在看<JavaScript高级程序设计>这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下..探究一下到底怎么读这本书.本书的内容好像只有到ES5...所以只能 ...