变量

162 阅读2分钟

基础知识:

1、在了解变量的声明前,我们需要知道变量分为全局变量和局部变量。
它们的分界点是函数,也就是说在函数外面声明的变量我们称它为全局变量,而在函数内部声明的变量我们称它为局部变量,局部变量只能在函数内部调用。
2、两类数据类型:
    基本数据类型:
        nubmer,string,boolean,undefiend,null
    引用数据类型:
        object(array,function)
3、声明和定义:
    var a;  // 声明变量 
    var a = 1; // 如果在声明变量的同时给这个变量赋值了,叫定义
4、变量提升
    var变量可以提升,没有var的变量是不会提升的
    循环变量也可以提升
    函数内部加var的变量也会提升,提升到了函数内部的最前面

一:声明一个变量可以用var,也可以用let

var声明变量的特点:
1、可以一次声明一个变量:var name="z3";
2、可以一次声明多个变量:var a,b,c;
3、关于重复声明的问题:
    var a=1;
    var b=2;
    console.log(a);
    结果:

4、关于遗漏声明的问题:
    a=1;
    console.log(a);
    结果:

    console.log(a);
    a=1;
    结果:遗漏声明的变量不能被提升

5、在js代码的预编译阶段可以提升变量声明
    console.log(a);
    var a=1;
    结果: 提示该变量undefined,该变量被提升

 let声明变量的特点:
 1、块级作用域(第三种作用域)。let所声明的变量,只在let命令所在的代码块内有效。
在使用var的时代,只有全局作用域和局部作用域,在es6中提出let关键,可以声明一个块级作用域。
 2、let没有“变量提升”现象(与var定义变量的不同之处)。
        console.log(a); 
        let a = 1;
        结果:

    3、不会成为window对象的属性(与var定义的变量的不同之处)
        let a=1;
        console.log(a)
        console.log(window.a)

    4、暂时性死区(TDZ)
    5、不能重复定义
        let a = 1;
        let a = 2;
        console.log(a);

二:声明一个常量用const

const:声明常量,值不能改变。
const声明常量的特点: 
    1,定义完后,不能修改值(基本数据类型,也可能是地址)
        const a=1
        a=2
        console.log(a) 
        结果:

        const obj = {name:"wangcai"};
        console.log(obj)
        obj = {age:100}
        console.log(obj)

    2,不能重复声明
        const a=1
        const a=2
        console.log(a)
        结果:

    3,没有提升
        console.log(a)
        const a=1 
        结果:

    4,声明时必须赋值
    const a
    console.log(a)
    结果: