理解var、let和const

理解var、let和const

// 参考 es6阮一峰 [添加链接描述](https://es6.ruanyifeng.com/#docs/let)
//1 var 变量使用在声明之前代码不会出错,全局声明
try {
    
    
    console.log(a) // undefined
    var a =1
}catch (e){
    
    
    console.log(e)
}
console.log(window.a === a) // true

//2 let es6新的语法 块级作用域,并不是定义在全局中,不能使用在声明之前,在定义在块作用域之外使用报错
let b = 0
console.log(b)
console.log(window.b) // undefine
try {
    
    
    // console.log(c) // 报错
    {
    
    
        let c = 1
        console.log(c) //1
    }
    // console.log(c) // 报错
}catch (e) {
    
    
    console.log(e)
}

//3 const 申明常量 作用和let相似,区别定义后不能修改,扩展es5怎么声明常量
 try {
    
    
     const d = 1
     d = 2  // Assignment to constant variable.
 }catch (e) {
    
    
     console.log(e);
 }

// 取代iife
(function (){
    
    
   var a = 10
}())
console.log(a)

// 允许在块级作用域内声明函数。
// 函数声明类似于var,即会提升到全局作用域或函数作用域的头部。
// 同时,函数声明还会提升到所在的块级作用域的头部。
function f() {
    
     console.log('I am outside!'); }

(function () {
    
    
    function f() {
    
     console.log('I am inside!'); }
    if (false) {
    
    
    }
    f();
}());
// 考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。如果确实需要,也应该写成函数表达式,而不是函数声明语句。



猜你喜欢

转载自blog.csdn.net/qq_44540152/article/details/116605424
今日推荐