6.3、ES6变量声明 let 和常量const

mac2026-04-25  10

一、var声明的问题

// var声明的问题 // 1.存在变量声明 // 2.挂载到window上 // 3.可以声明多次 // 4.只有全局作用域和函数作用于 console.log(a) //undefined 变量提升问题 var a = 10

二、let声明的问题

// let声明的问题 // 1. 不存在变量声明 而存在暂时性死区 // 2.不可以声明多次 // 3.除了全局作用域和函数作用域,还有{}(代码段的域) // 4.没有挂在到window上 // console.log(b) //报错 暂时性死区 b is not defined // let b = 10 // 不可以声明多次 // let c = 10 // let c = 20 // console.log(c) //报错 不可以声明多次 console.log(window.b) //报错 暂时性死区 let b = 10 // // 不可以声明多次 // let c = 10 // var c=10 // let c = 20 // console.log(c) //报错 不可以声明多次 // let b = 10 // console.log(window.b) //undefined 不挂在到window上 if (true) { // let a = 10 var a = 10 } // console.log(a) // let 声明会报错 console.log(a) // var 10 let a = 10; //全局的 (function() { console.log(a) //10 a = 5 //改写全局的域 console.log(window.a) //undefined console.log(a) //5 })() for (let i = 0; i < 3; i++) { for本身是一个父的域 for里面{}又是一个域 let i = 10 console.log(i) // 3 个 10 } console.log(i) //()中var声明的 3 console.log(i) //()let中声明的 报错()中let声明不是全局的 <ul> <li>11111111111</li> <li>11111111111</li> <li>11111111111</li> <li>11111111111</li> <li>11111111111</li> </ul> <script> var oli = document.getElementsByTagName('li') // for (var i = 0; i < oli.length; i++) { // oli[i].onclick = function() { // console.log(i) //点那个都是5 // } // } // // 方法一 // for (var i = 0; i < oli.length; i++) { // oli[i].index = i // oli[i].onclick = function() { // console.log(this.index) //利用自定义属性 // } // } // // 方法二 // for (var i = 0; i < oli.length; i++) { // oli[i].onclick = (function(i) { // return function() { // console.log(i) // } // })(i) // } // 方法三 for (let i = 0; i < oli.length; i++) { //for 循环每走一次就会将i存一次 oli[i].onclick = function() { console.log(i) //利用自定义属性 } }

const 声明

// const 声明一个常量 同let // 声明必须赋值 // 声明之后不可以更改 // 如果声明的是引用类型可以修改其属性,但不可以修改其引用 const a = 10; a = 5 var a = 6 console.log(a) //报错 const c; c = 10 console.log(c) //报错 声明必须赋值 // const arr = []; // arr.push('张三') // console.log(arr) //["张三"] // // 不可修改器引用 // arr = '123' //报错 var obj = { name: '张三' } // obj = '李四' //报错 obj.name = '李四' //可以 console.log(obj) //{name: "李四"}
最新回复(0)