var let const 的区别

var:
1.可以重复声明
2.无法限制修改
3 没有块级作用域
let:不能重复声明 变量 可以修改 块级作用域
const:不能重复声明 不能修改 块级作用域

重复声明

var 可以重复声明 而 let const 不行

var a = 12;
var a = 5;
alert(a);
// 会报错
let a = 12
let a = 5
alert(a)

块级作用域

var 没有自己的块级作用域 let const 有

  if (true) {  // 不会报错且弹出 a
    var a = 12;
        }
  alert(a);
  if (true) { // 报错
    let a = 12;
        }
  alert(a);
 { // 报错 找不到 a
    const a = 12;
    }
  alert(a);

函数本身就是var 的块级作用域 垫了个函数 所以可以正确显示

<input type="button" value="按钮1">
<input type="button" value="按钮2">
<input type="button" value="按钮3">
    <script>
        var btn = document.querySelectorAll('input');

        for (var i = 0; i < btn.length; i++) {
            (function (i) {
                btn[i].onclick = function () {
                    alert(i);
                }
            })(i)
        }

有自己的块级作用域 可以正确显示

   <input type="button" value="按钮1">
    <input type="button" value="按钮2">
    <input type="button" value="按钮3">
    <script>
        var btn = document.querySelectorAll('input');
        for (let i = 0; i < btn.length; i++) {
            btn[i].onclick = function () {
                alert(i);
            }
        }
    </script>

const的使用

注意1 一旦给const修饰的标识符被赋值之后 不能修改
注意2 在使用const 定义标识符 必须进行赋值
注意3 常量的含义是指向的对象不能修改 但是可以改变对象内部的属性

  const obj = {
      age: 18,
      name: '男神'
    }
    console.log(obj);
    
    obj.age = 19
    obj.name = '小川'
    console.log(obj);
上一篇:延时器和定时器


下一篇:js三大事件