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();

最新文章

  1. MVC5 网站开发之六 管理员 1、登录、验证和注销
  2. J2EE 项目读写分离
  3. ubuntu-Linux系统读取USB摄像头数据(uvc)
  4. 【iOS自定义键盘及键盘切换】详解
  5. MVC+MQ+WinServices+Lucene.Net Demo
  6. yield return的用法简介
  7. Python开发【第三章】:Python函数介绍
  8. tapping of data 词义来源
  9. dedecms搜索框制作
  10. RS开发中的一些小技巧[不定期更新]
  11. JDE报表开发笔记(数据选择及继承)
  12. 【NOIP2013】火柴排队
  13. YAPF:Google开源的Python代码格式化工具
  14. web.xml 中的listener、 filter、servlet 加载顺序
  15. 云服务器 ECS Linux 误删除文件恢复方法介绍
  16. Monad学习
  17. Android手机令牌教程
  18. xml它解析----DOM解析
  19. AngularJS 实现页面滚动到底自动加载数据的功能
  20. php array_walk_recursive函数的使用

热门文章

  1. Spring Boot2(七):拦截器和过滤器
  2. 深扒那些艺术的CSS
  3. HDU 6215:Brute Force Sorting(链表+队列)
  4. C# 获取计算机相关信息
  5. 使用开源框架Sqlsugar结合mysql开发一个小demo
  6. WebApi 通过拦截器设置特定的返回格式
  7. idea环境下push项目
  8. 学习 Python 心得
  9. [小米OJ] 6. 交叉队列
  10. 云计算:Linux运维核心管理命令详解