{
let name = 'zangsan'
function fn() {
console.log(name);
}
}
fn()
const AS = 'lisi'
let arr = ['zahngsan', 'lisi', 'wangwu', 1]
let [a, b, c, d] = arr
console.log(a);
let obj = {
name: 'zhao',
age: 19,
action() {
console.log('action');
}
}
let { name, age, action } = obj
console.log(name, age, action)
action()
const B = '的变量'
const A = `我是可以换行的
反引号并且可以拼接上${B}`
console.log(A);
function fun() {
console.log(this);
}
let fun1 = () => {
console.log(this);
}
fun.call(obj)
fun1.call(obj)
let fun2 = n => n*n
console.log(fun2(8));
function fun3(a, b, c=10) {
return a + b + c
}
console.log(fun3(1,2));
function fun4({host, username, action}) {
console.log(host, username);
action()
}
fun4({
host: 3306,
username: 'window10',
action() {
console.log('行为');
}
})
function fun5(a,b,...args) {
console.log(a,b,'rest' + args);
}
fun5(1,2,4,5,67)
- let:声明变量,只能声明一次,并且只在代码块(大括号中,if、for)中有效,没有变量提升,不影响作用域链;
- const:声明常量,一定要赋初始值,一般常量使用大写,常量值不能修改,块级作用域,对于数组和对象内的属性和方法做修改,不是修改常量,因此不会报错;没有声明提前;
- 解构赋值:按照一定模式从数组和对象中提取值,对变量进行赋值,相当于使用一个简单变量,一一对应数组中的每一个,或者对象的每一个属性和方法;该变量可以在它所在的作用域里面直接使用;
- 模板字符串:反引号``,可以在内容中直接出现换行不报错,可以直接变量拼接(反引号中使用${需要拼接的变量名},这样就可以拼接成功);
- 对象的简化写法:对象中属性 name:name,后者是变量,就可以简写为变量的name,对象中函数声明可以省略function和冒号;
- 箭头函数:this是静态的,始终指向函数声明时所在作用域下的this值,call方法不可改变他的this;不能作为构造函数实例化对象;不能使用arguments对象;箭头函数简写,当形参有且只有一个的时候,可以省略小括号、当代码题只有一条语句的时候可以省略花括号,此时return语句也要省略,函数的执行结果就是函数的返回值;适合与this无关的回调,不适合对象的方法;
- 函数默认参数的初始值:形参中直接赋初始值,具有默认值的形参一般位置放在最后;与解构赋值结合,实参是对象时,可以形参是解构;
- rest参数:用于获取函数的实参,用来代替arguments,形参位置需要写…args;函数体内就可以打印args;它是一个数组;如果参数有多个,必须放在参数的最后,表示其余剩下的参数;