变量提升(先使用,后定义)



console.log(a) // 10

var a = 10;



run()   //running....20

function run(){
    var b = 20
    console.log("running...." + b)
}

let (ES6)



const x = 1;

x = 2;   //报错 const 不能再次赋值


console.log(a) //undefine let 不支持变量提升

let a = 10;
let a = 30;    //报错 let 不支持在次声明


function run(){
    let b = 20;
}

console.log(b) //undefine。 let块状作用域

=> 函数 (ES6)箭头函数为匿名函数,不能变量提升


a = a => a  //函数名 参数 返回值(没有{},默认是返回值)
 
b = (c,d) => {

    //箭头函数的 this
    //默认指向在定义它时,它所处的对象,而不是执行时的对象,
        定义它的时候,可能环境是window(即继承父级的this)
        
    console.log(this)
}
b(1,2)

function eat(){
    //普通函数的this
    //1,特指调用当前的函数的对象
    //2,默认情况下,没找到直接调用者,则this指的是 window
    //3,在严格模式下,没有直接调用者的函数中的this是 undefined
    
    console.log(this)
}
eat()


最常用的定时器


setTimeout(function() {

    conconsole.log("已经过了一秒钟......")

}, 1000);

持续更新中……