基础知识:
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)
结果: