一、let变量声明以及声明特性
1.变量不可重复声明
let star = '郑建'
let star = 'Zack Jason' // 报错 变量重复声明
// 使用var可以重复声明
2.块级作用域(在{}里声明的变量 不可以在{}外使用)
if(true) {
let girl = 'Molly'
}
console.log(girl) // 报错 不可以访问这个变量
3.不存在变量提升
console.log(song); // 报错没定义就调用
let song = '恋爱达人';
4.不影响作用域链
{
let dog= '小狗'
function fn(){
console.log(dog);
}
fn(); // 可以打印出dog 函数里没有找到定义的dog会往作用域链上找
}
二、const变量声明以及声明特性
1.一定要赋初始值
const NAMe = '郑建'
2.一般常量用大写(潜规则)
const A = 100;
3.常量值不能修改
const NAME = '郑建'
NAME = 'Zack Jason' // 报错 const定义的变量不可修改值
4.块级作用域
if(true) {
const NAME = '郑建'
}
console.log(NAME); // 报错 外部不可访问{}内部定义的变量
5.对于数组和对象的元素修改,不算对常量的修改,不会报错(引用类型的引入地址 你修改东西的时候没有改变,所以不会报错, 它检测的是引用地址)
const TEAM = ['郑建', 'Zack Jason'];
TEAM.push('Meiko'); // 不会报错
三、结构赋值
1.数组结构
const F4 = ['郑建', 'Molly', 'Zack Jason', '莫丽'];
let [Z, M, ZA, ML] = F4;
console.log(Z); // 郑建
console.log(M); // Molly
console.log(ZA); // Zack Jason
console.log(ML); // 莫丽
2.对象的结构
const zhao = {
name: '赵B山',
age: '??',
xiaopin: function() {
console.log('我是黑社会')
}
};
let {name, age, xiaopin} = zhao;
console.log(name); // 赵B山
console.log(name); // ??
xiaopin(); //调用xiaopin函数
四、模板字符串
1.声明
let str = `你是一个笨蛋`
console.log(str, typeof str) // 你是一个笨蛋 string
2.内容中可以直接出现换行符
let str = `我
是
你
爷
爷`;
//如果传统的写法换行需要用+''+拼接
3.变量拼接
let lovest = '郑建';
let out = `${lovest}是我心目中最搞笑的人!!`;
console.log(out); // 郑建是我心目中最搞笑的人!!
五、对象的简化写法
1.ES6允许在大括号里面直接写入变量和函数,作为对象的属性和方法
let name = '郑建';
let chang = function() {
console.log('嗯嗯')
};
const school = {
//name = name; //简化为name
name,
change,
improve() { // 在类里面这个样定义函数属性 improve: improve(){}
console.log("嗯呢")
}
}