ECMAScript

一、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("嗯呢")
    }
}

你可能感兴趣的:(js,javascript,前端)