美文网首页
var,let,const的区别

var,let,const的区别

作者: 大嵩的格洛米 | 来源:发表于2021-05-04 15:59 被阅读0次
  1. var声明的变量会挂载在window上,而let和const声明的是块作用域
  2. var声明的变量存在变量提升,而let和const声明的不会
  3. 同一作用域下let和const不能能声明同名变量,而var可以
  4. const变量一旦声明必须赋值,不能使用null占位符,声明后(地址)不可再修改(地址内的内容已可修改,不可重新分配内存)

详解:

1. var

var定义的变量,没有块的概念,可以跨块访问,不可以跨函数访问,(如果定义为全局变量,是可以跨函数访问的)
可以重新赋值(变量提升)

var a = 1;
  // var a;//不会报错
  console.log('函数外var定义a:' + a);//可以输出a=1
  function change(){
    a = 4;
    console.log('函数内var定义a:' + a);//可以输出a=4
  }
change();
console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4

2.let

let定义的变量,只能在块作用域内访问,不能跨块访问,也不能跨函数访问,无变量提升,也不可以重复声明

'use strict';
function func(args){
    if(true){
        let i = 6;
        console.log('inside: ' + i);  //不报错
    }
    console.log('outside: ' + i);  // 报错 "i is not defined"
};
func();

let声明的变量只在块级作用域内有效

// 不存在变量提升
'use strict';
function func(){
    console.log(i);
    let i;
};
func(); // 报错

不存在变量提升,而是‘绑定’在暂时性死区(TDZ)

'use strict';
var test = 1;
function func(){
    console.log(test);
    let test = 2;
};
func();  // 报错

在let 声明变量前使用该变量,会报错,而不是像var声明的 会‘变量’提升。
严格上说,没有提升变量是不对的,或者说它提升了,但es6规定变量没有声明之前不可以使用。
如果let声明的test没有被提升,那么打印出来的应该是var声明的test,而他却报错,说明它提升了,只是规定了在声明之前不可以使用,我们称这一特性称为暂时性死区(temporal dead zone),且这一特性,仅对块级作用域的命令有效(let const)

3. const

const用来定义常量,使用时必须初始化,(必须赋值),只能在块作用域里访问,不可被修改,无变量提升。
const和let的使用一样,不同的是const声明的是一个常量,且必须被赋值,否则就会报错。
注意:const声明的常量,指的是这个常量的内存地址不可被改变,而不是对应的值不可被改变

'use strict';
function func(){
    const PI;
    PI = 3.14;
    console.log(PI);
};
func(); // 报错“Missing initializer in const declaration”

相关文章

  • Android菜鸟学习js笔记 一

    一、var,const,let区别? var 变量,const 常量,let块级变量。

  • es6

    1、let 和const(定义变量) (1)var 、let 、const的区别 a、作用域区别var 变量声明会...

  • JS中var、let、const区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • js中const,var,let区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • 面试题 var let const的区别 箭头函数和普通函数的区

    var let const 有什么区别 var var声明的变量可进行变量提升,let和const不会var可以重...

  • let和const

    let/const(常用) let和var 区别 let,const用于声明变量,用来替代老语法的var关键字,与...

  • js 2022经典面试题汇总

    1.JS数据类型有哪些 2.var、let、const区别 var存在变量提升,而let、const没有 let、...

  • ES6

    定义变量 let const 和 var 的区别 var 会进行预解析let / const 不会进行预解析预解析...

  • js 中 var let const 的区别

    很多人认为 var 和 let const 的区别在于,var 会变量提升,而 let const 不会,虽然可以...

  • const let var区别以及使用

    const let var区别如下: 1)var 声明的范围是函数作用域,let 和 const 声明的范围是块作...

网友评论

      本文标题:var,let,const的区别

      本文链接:https://www.haomeiwen.com/subject/lmbcdltx.html