一、let(变量) 与 const(常量)
1. 之前定义变量,用 var 关键字;有如下主要缺点:
- 存在变量提升问题,降低 js 代码的可阅读性
- 没有块级作用域,容易造成变量污染
2. let 主要特性:
- 不存在变量提升问题,只有定义之后才能使用此变量
- 有 { } 块级作用域
- 同级作用域同一个变量不能申明两次
3. const 主要特性:
- 不存在变量提升问题,只有定义之后才能使用此变量
- const 定义的常量,无法被重新赋值
- 当定义常量的时候,必须定义且初始化,否则报语法错误
- const 定义的常量,也有 块级作用域
二、变量的解构赋值
定义:所谓的解构赋值,就是把 某个对象中的属性,当作变量,给解放出来,这样,今后就能够当作变量直接使用了;不影响原对象。点语法耗费性能,可以用此方法保存变量,减少点的使用
- 可以使用 :为解构出来的变量重命名
// 变量的解构赋值
const { name : name123, age, gender } = person
console.log(name123)
var [a,b,c] = [1,2,3]; // 数组解构
// 交换变量
var a = 100;
var b = 200;
[a,b] = [b,a]
三、箭头函数
1. 语法:
- 定义普通的 function 函数
function show() {
console.log('这是普通 function 定义的 show 方法')
}
- 把方法定义为箭头函数(最完整的写法)
(形参列表) => { 函数体代码 }
2. 箭头函数,本质上就是一个匿名函数;
3. 箭头函数的特性: 箭头函数内部的 this, 永远和 箭头函数定义时的外部的 this 保持一致(无法用bind、call、apply改变this指向);
document.getElementById('btn').onclick = function() {
// 箭头函数内部的this,永远指向箭头函数定义时外层的this
setTimeout(() => {
console.log(this)
this.style.backgroundColor = 'red'
}, 1000)
}
4. 变体(不推荐):
// 推荐写法
var add = (x, y) => { return x + y }
console.log(add(1, 2))
- 变体1:如果箭头函数,左侧的形参列表中,只有一个参数,则,左侧小括号可以省略;
// 变体1
var add = x => { return x + 10 }
console.log(add(1))
- 变体2:如果右侧函数体中,只有一行代码,则,右侧的 { } 可以省略;
// 变体2
var add = (x, y) => x + y
console.log(add(1, 2))
- 变体3:如果箭头函数左侧 只有一个 形参,而且右侧只有一行代码,则 两边的 () 和 {} 都可以省略
// 变体3
var add = x => x + 20
console.log(add(3))
5. 注意: 如果我们省略了 右侧函数体的 { },那么,默认会把 右侧函数体中代码的执行结果,当作箭头函数的调用结果 return 出去;
四、对象中 定义方法 和 定义属性 的便捷方式
var person = {
name,
age,
show,
say() {
console.log('ok')
}
}
五、模板字符串
用` ` 包裹字符串
var age = 18;
var name = "张三";
console.log("我叫" + name + ",我今年" + age + "岁了");
console.log(`我叫 ${name} ,我今年 ${age} 岁了`);
六、未完成
promise
async await
import export
...
网友评论