zoukankan      html  css  js  c++  java
  • JS中const、var和let区别

    在JavaScript中有三种声明变量的方式:var、let、const。

    1.const 声明创建一个只读的常量。这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次,必须初始化。

    const b = 2;//正确
    // const b;//错误,必须初始化
    console.log('函数外const定义b:' + b);//有输出值
    // b = 5;
    // console.log('函数外修改const定义b:' + b);//无法输出
     
    2.var 语句用于声明变量。
    var a; //undefined (如果不初始化,输出undefined)
    var a=666; //放到方法外面为全局变量
    function fun(){
    //var a=555;    //放到方法内部为局部变量,只能在fun()内部读取
      console.log(a);  //666
    }
    如果不实用var  关键词,无论放到方法内还是方法外都是全局变量,所以var  会影响变量作用域。
     
    3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。
    ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。即声明一个局部变量。
    以for循环为例:
    下面的代码如果使用var,最后输出的是10
    var a = [];
    for (var i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 10
    上面代码中,变量ivar声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。(常见于闭包的考察)
    如果使用let,声明的变量仅在块级作用域内有效,最后输出的是6。
    var a = [];
    for (let i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 6

    上面代码中,变量ilet声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6
    要每天多努力一些,比别人多努力一个小时。
  • 相关阅读:
    基础语法
    Python简介
    Linux安装Python
    Git安装和使用
    vue 表单验证省市县三联动
    js 异步问题
    Json对象与Json字符串互转(4种转换方式)
    vue 常用的表单验证,包括手机号码,固定电话和身份证...
    webpack 基本功能和原理
    测试build出来的dist文件夹是否编译成功
  • 原文地址:https://www.cnblogs.com/leeyen/p/6824166.html
Copyright © 2011-2022 走看看