十分钟带你看一遍ES6新特性
let , const关键字
var
看习惯了java, 看js真的是忍不住想笑,比如说这个var,它太自由了,自由到{}根本限制不住它的生命周期
js的var关键字,无论在何处声明,都会被视为声明在函数的最顶部,不在函数里面的就被视为在全局的最顶部,这就是所谓的变量提升
function aa(bool) {
if (bool) {
var test = "hello";
} else {
console.log(test);
}
}
aa(false);
比如上面的代码, 他就不会报错,而是说undifined, 因为var的变量提升, 相当于下面那样:
function aa(bool) {
var test;
if (bool) {
test = "hello";
} else {
console.log(test);
}
}
aa(false);
let
换成let关键字,就是普通变量, 它的生命周期被限制在 { }
function aa(bool) {
if (bool) {
let test = "hello";
} else {
console.log(test);
}
}
const
const 声明常量, 值不允许被修改,而且必须初始化
function aa() {
let a = 'abc';
const test = a;
a = "world";
alert('a=='+a);
alert('test=='+test);
}
aa();
结果就是 abc world
如果尝试直接对test赋值, 编译器会报错的
模板字符串的拼接
这样取值完全没问题, 但是js的设计者认为他 + 太多了,low爆了
console.log(name1 + "喜欢" + name2);
于是: ${} , 注意啊, 是esc下面的键位
console.log(`${name1}喜欢${name2}`);
方法入参的默认值
如果我们不给入参传值, 默认就是空, 一用就报错, 所以参数需要默认值是很有必要的
这时候, 用户传递进来值了,使用的就是用户传递进来的值, 在java中想干这个事,得在参数位置加老长的注解
function sayName(name = "张三") {
alert(name);
}
箭头函数
es6的箭头函数和java8的lambda表达式如出一辙, 因为学了java8, 所以es6的箭头函数也是秒上手了, 包括流式的操作也如出一辙
对象的简写和解构
原来,如果方法想返回一个对象,需要这样写
function people(name, age) {
return {
name: name,
age: age
}
}
在es6中,如果属性和值相同 ,就变成了这样
function people(name, age) {
return {
name,
age
}
}
动态的添加属性, 在java想都别想,
let p = {name: '张三', age: 680};
alert(p.name);
alert(p.age);
- 添加属性
p.address = '山东';
- 添加函数
p.add = () => {};
其实js这么自由也不一定是好事, 起码不能乱点了, 它也不给报错, 一不留神就多了个属性
组装对象或数组SpreadOperator ...
const color = ['red', 'blue'];
const colorful = [...color, 'green']
// 现在 colorful数组就是 三个颜色的数组 , 同样换成{} 也一样
Import 和 export
这个特性vue用的最多, 模块化的感觉很强烈
let fun = function () {
console.log("fun")
}
export {fun}
// 在第二个文件 导入
import fun from "./fun";
// 然后使用
fun()
面向对象的编程模式-类
class person {
// 构造函数
constructor(name) {
this.name = name; // 不提前定义变量? 不存在的,直接点就行了老铁
}
// 方法
sayHello() {
console.log("hello");
}
}
// 类的继承
class Student extends person {
constructor(name) {
super(name);
}
sayHaha() {
console.log("haha");
}
}
使用:
它并不能写 父类引用指向子类对象
//person stu = new Student('zhangsan');
var stu = new Student('zhangsan');
stu.sayHaha();
十分钟带你看一遍ES6新特性的更多相关文章
- 轻松学会ES6新特性之生成器
生成器虽然是ES6最具魔性的新特性,但也是最难懂得的一节,笔者写了大量的实例来具体化这种抽象的概念,能够让人一看就懂,目的是希望别人不要重复或者减少笔者学习生成器的痛苦经历. 在说具体的ES6生成器之 ...
- 必须掌握的ES6新特性
ES6(ECMAScript2015)的出现,让前端开发者收到一份惊喜,它简洁的新语法.强大的新特性,带给我们更便捷和顺畅的编码体验,赞! 以下是ES6排名前十的最佳特性列表(排名不分先后): 1.D ...
- 前端入门21-JavaScript的ES6新特性
声明 本篇内容全部摘自阮一峰的:ECMAScript 6 入门 阮一峰的这本书,我个人觉得写得挺好的,不管是描述方面,还是例子,都讲得挺通俗易懂,每个新特性基本都还会跟 ES5 旧标准做比较,说明为什 ...
- 34.js----JS 开发者必须知道的十个 ES6 新特性
JS 开发者必须知道的十个 ES6 新特性 这是为忙碌的开发者准备的ES6中最棒的十个特性(无特定顺序): 默认参数 模版表达式 多行字符串 拆包表达式 改进的对象表达式 箭头函数 =&> ...
- ES6新特性概览
本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...
- ES6新特性(函数默认参数,箭头函数)
ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...
- ES6新特性简介
ES6新特性简介 环境安装 npm install -g babel npm install -g babel-node //提供基于node的REPL环境 //创建 .babelrc 文件 {&qu ...
- 你不知道的JavaScript--Item24 ES6新特性概览
ES6新特性概览 本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代 ...
- javascript ES6 新特性之 扩展运算符 三个点 ...
对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...
随机推荐
- redhat6.0下配置DNS
最近操作系统要结课,老师要求在redhat上配置各种服务器角色,包括dhcp.ftp.web.dns.前三个都还好,但就dns,被折磨的死去活来的,真让人头大.还好在同学的帮助下最后配置成功,实现了正 ...
- gmap 获取瓦片数
在 gmap1.7版本中 gMapControl1.MapProvider.Projection.GetAreaTileCount(area, i, 0); 可用来获取到erea里i层的瓦片数量. 但 ...
- ES6_08_Iterator遍历器
Iterator遍历器: 概念: iterator是一种接口机制,为各种不同的数据结构提供统一的访问机制 作用: 1.为各种数据结构,提供一个统一的.简便的访问接口: 2.使得数据结构的成员能够按某种 ...
- 致远A8任意文件写入漏洞_getshell_exp
近期爆出致远 OA 系统的一些版本存在任意文件写入漏洞,远程攻击者在无需登录的情况下可通过向 URL /seeyon/htmlofficeservlet POST 精心构造的数据即可向目标服务器写入任 ...
- 聚类时的轮廓系数评价和inertia_
在进行聚类分析时,机器学习库中提供了kmeans++算法帮助训练,然而,根据不同的问题,需要寻找不同的超参数,即寻找最佳的K值 最近使用机器学习包里两个内部评价聚类效果的方法:clf=KMeans(n ...
- 第三章.定制专属的kali
1.更新升级 • apt-get update • apt-get upgrade • apt-get dis-upgrade 2.根据个人喜好需求安装软件包 • 库 • Apt-get命令 • ...
- MyBatis从入门到精通:第一章配置MyBatis
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- Java用Xom生成XML文档
这个总结源于Java编程思想第四版18.13节的案例: 完整代码地址: Java编程思想:XML 相关Api地址: Attribute Element Document Serializer 由于案例 ...
- I/O:DataInput
DataInput: boolean readBoolean() :读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false. byte readByte() :读取并返回一 ...
- ASP.NET--Repeater控件分页功能实现
这两天由于‘销售渠道’系统需要实现新功能,开发了三个页面,三个界面功能大致相同. 功能:分页显示特定sql查询结果,点击上一页下一页均可显示.单击某记录可以选定修改某特定字段<DropDownL ...