定制软件开发var、let、const的区别(超详细易懂)

1.定制软件开发作用域区别

letconst定制软件开发具有块级作用域,var定制软件开发不存在块级作用域,定制软件开发可以跨块访问, 定制软件开发不能跨函数访问

  1. if(true){
  2. var a = 0
  3. let b = 0
  4. const c = 0
  5. }
  6. console.log(a);
  7. console.log(b);
  8. console.log(c);

 这里只有var定制软件开发声明的变量才能打印出来,因为var声明的事全局变量,

var出来的变量是全局的,但是不能跨函数访问。看下面代码

  1. function test() {
  2. var message = "zimo"; // 局部变量
  3. }
  4. test();
  5. console.log(message); // 报错

 

 2.变量提升

什么是变量提升?

变量能在声明之前使用,就是变量提升。

var存在变量提升,let和const不存在变量提升

  1. console.log(a);
  2. console.log(b);
  3. console.log(c);
  4. var a = 1
  5. let b = 2
  6. const c = 3

var在js中是支持预解析的声明出来的就不会报错是undefined,let,const就会报错

3.全局属性

浏览器的全局对象是window。var声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是let和const不会。

  1. var a = 1
  2. let b = 2
  3. const c = 3
  4. console.log(window.a);
  5. console.log(window.b);
  6. console.log(window.c);

 

4.重复声明

var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的遍历。const和let不允许重复声明变量。

  1. var a = 1
  2. var a = 2
  3. console.log(a);

 

var声明的变量同名只会打印最后一次声明的值

 let 和 const同一个作用域下不能重名,编辑器都提示了

5.暂时性死区

在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在。

  1. // name会被提升
  2. console.log(name); // undefined
  3. var name = 'zimo';
  4. // age不会被提升
  5. console.log(age); // ReferenceError:age没有定义
  6. let age = 18;
  7. // sex不会被提升
  8. console.log(age); // ReferenceError:age没有定义
  9. const sex = "男";

 6.初始值设置

在变量声明时,var 和 let 可以不用设置初始值。而const声明变量必须设置初始值。

 编辑器都提示了

7.指针指向

指针指向:let和const都是的用于创建变量的语法。 let创建的变量是可以更改指针指向(可以重新赋值)。但const声明的变量是不允许改变指针的指向。

8.应用场景

块级作用域解决了ES5中的两个问题:

  • 内层变量可能覆盖外层变量
  • 用来计数的循环变量泄露为全局变量

应用场景:以后声明变量使用 let 就对了

应用场景:声明对象类型使用 const,非对象类型声明选择 let

没有特殊情况就不要用var了

9.总结

区别

var

let

const

是否有块级作用域

×

✔️

✔️

是否存在变量提升

✔️

×

×

是否添加全局属性

✔️

×

×

能否重复声明变量

✔️

×

×

是否存在暂时性死区

×

✔️

✔️

是否必须设置初始值

×

×

✔️

能否改变指针指向

✔️

✔️

×

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发