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新特性的更多相关文章

  1. 轻松学会ES6新特性之生成器

    生成器虽然是ES6最具魔性的新特性,但也是最难懂得的一节,笔者写了大量的实例来具体化这种抽象的概念,能够让人一看就懂,目的是希望别人不要重复或者减少笔者学习生成器的痛苦经历. 在说具体的ES6生成器之 ...

  2. 必须掌握的ES6新特性

    ES6(ECMAScript2015)的出现,让前端开发者收到一份惊喜,它简洁的新语法.强大的新特性,带给我们更便捷和顺畅的编码体验,赞! 以下是ES6排名前十的最佳特性列表(排名不分先后): 1.D ...

  3. 前端入门21-JavaScript的ES6新特性

    声明 本篇内容全部摘自阮一峰的:ECMAScript 6 入门 阮一峰的这本书,我个人觉得写得挺好的,不管是描述方面,还是例子,都讲得挺通俗易懂,每个新特性基本都还会跟 ES5 旧标准做比较,说明为什 ...

  4. 34.js----JS 开发者必须知道的十个 ES6 新特性

    JS 开发者必须知道的十个 ES6 新特性 这是为忙碌的开发者准备的ES6中最棒的十个特性(无特定顺序): 默认参数 模版表达式 多行字符串 拆包表达式 改进的对象表达式 箭头函数 =&> ...

  5. ES6新特性概览

    本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...

  6. ES6新特性(函数默认参数,箭头函数)

    ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式:   从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...

  7. ES6新特性简介

    ES6新特性简介 环境安装 npm install -g babel npm install -g babel-node //提供基于node的REPL环境 //创建 .babelrc 文件 {&qu ...

  8. 你不知道的JavaScript--Item24 ES6新特性概览

    ES6新特性概览 本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代 ...

  9. javascript ES6 新特性之 扩展运算符 三个点 ...

    对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...

随机推荐

  1. Codeforces 760B:Frodo and pillows(二分)

    http://codeforces.com/problemset/problem/760/B 题意:有n张床m个枕头,每张床可以有多个枕头,但是相邻的床的枕头数相差不能超过1,问第k张床最多能拥有的枕 ...

  2. POI 身份证号码 手机号 日期值的处理方式

    private static SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ...

  3. web前端css(二)

    一.  标准文档流 标准文档流中会有一些现象: 空白折叠 和 高低不齐边底对齐的现象 标准文档流等级森严, 标签分为两种等级: 行内元素 和 块级元素. 1. 行内元素 和 块级元素的区别: 行内元素 ...

  4. Python Day_2

    入门任何一门编程语言,前面总是离不开变量,字符串这些概念,而且这些东西在往后的日子里,有着至关重要的存在.因为不管我们写什么程序,都要用到变量以及字符串. 变量 首先,我们的变量在定义的时候,是不需要 ...

  5. 使用Optional摆脱NPE的折磨

    在目前的工作中,我对Java中的Stream和Lambda表达式都使用得很多,之前也写了两篇文章来总结对应的知识. 024:Java流实现Shell:cat 1.log | grep a | sort ...

  6. HTML&CSS构建和设计网站

    1.a链接:两个特性,href.target,href里添加mailto:邮箱可以直接链接到其它人的邮箱,添加#id,可以把窗口位置直接定位到该id的元素位置, target:_black可以在新的窗 ...

  7. Vue状态管理之Bus

    一般在项目中,状态管理都是使用Vue官方提供的Vuex 当在多组件之间共享状态变得复杂时,使用Vuex,此外也可以使用Bus来进行简单的状态管理 1.1 父组件与子组件之间的通信 vue.config ...

  8. 【深搜(DFS)-例题-踏青】-C++

    描述 小白和他的朋友周末相约去召唤师峡谷踏青.他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地.草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都 ...

  9. 编译AMQP-CPP

    1 cd  ./AMQP-CPP/examples/boost$ 2.cmake . 提示boost版本太低, 首先要编译生成boost安装工具bjam进入boost目录执行:./bootstrap. ...

  10. 洛谷P2598 [ZJOI2009]狼和羊的故事 题解

    题目链接: https://www.luogu.org/problemnew/show/P2598 分析: 我们知道此题的目的是将狼和羊分割开,很容易想到狼在S,羊在T中. 首先,我们可以在狼,羊,空 ...