Home > Web Front-end > JS Tutorial > Let's talk about the differences between var, let and const (code example)

Let's talk about the differences between var, let and const (code example)

藏色散人
Release: 2023-01-06 16:25:33
forward
2187 people have browsed it

本篇文章给大家带来了关于JavaScript的相关知识,其中主要给大家介绍了var、let以及const的区别有哪些,还有ECMAScript 和 JavaScript的关系介绍,感兴趣的朋友一起来看一下吧,希望对大家有帮助。

Let's talk about the differences between var, let and const (code example)

什么是JavaScript?

首先,ECMAScript 和 JavaScript 什么关系?

  • ECMAScript是一个国际通过的标准化脚本语言。
  • JavaScript由ECMAScript和DOM、BOM三者组成。 可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。

var、let、const的区别?

1. var声明变量存在变量提升,let和const不存在变量提升

console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值
console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
var a = 100;	
let b = 10;
const c = 10;
console.log(a);//a=100
Copy after login

2. let和const只能在块作用域里访问

if(1){
    var a = 100;
    let b = 10;
    const c = 1;
}

console.log(a); // 100
console.log(b)  // 报错:b is not defined  ===> 找不到b这个变量
console.log(c)  // 报错:c is not defined  ===> 找不到c这个变量
Copy after login

3. 同一作用域下let和const不能声明同名变量,而var可以

var a = 100;
console.log(a); //控制台输出 100

var a = 10;
console.log(a); //控制台输出 10

let a = 100;
let a = 10;

//  控制台报错:Identifier 'a' has already been declared  ===> 标识符a已经被声明了。
Copy after login

4. const定义常量,而且不能修改,但是在定义的对象时对象属性值可以改变

 const a=2
 a=3
 console.log(a)  //控制台报错
Copy after login
const person = {
    name : 'make',
    sex : '男'
}

person.name = 'test'

console.log(person.name)    //运行发现控制台没有报错,且 person.name 被成功修改
Copy after login

????这是怎么回事呢?

因为对象是引用类型的,person中保存的仅是对象的指针,而修改对象的属性不会改变对象的指针,所以这种情况就会修改成功。也就是说const定义的引用类型只要指针不发生改变,都是被允许的。

接下来我们试着修改一下指针,让person指向一个新对象,最后果然报错

const person = {
  name : 'make',
  sex : '男'}person = {
  name : 'test',
  sex : '男'}console.log(person.name)  //控制台报错
Copy after login

5. 小结

  • var定义的变量变量提升,没有块的概念,可以跨块访问

  • let定义的变量只能在块作用域里访问,不能声明同名变量。

  • const用来定义常量,使用时必须初始化(即必须赋值),不能声明同名变量,只能在块作用域里访问,而且不能修改,但是在定义的对象时对象属性值可以改变。

  • 他们都不能跨函数访问

推荐学习:《JavaScript视频教程

The above is the detailed content of Let's talk about the differences between var, let and const (code example). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template