分别为function,import和class
1、function声明的函数变量也存在变量提升,用法有两种,分别为:
(1)var a=function(){...}
(2)function a(){...}
注意:第一种方式不能先调用,后声明,只能先声明函数,然后调用。第二种方式
定义函数可以先调用,后声明。
2、import声明的变量主要用于引用文件等操作,例如:
(1)import a from "xxx"
注意:此方法通常在script标签最顶部使用。
3、class声明类,作为对象的模板。通过class来定义一个类:
(1)class a {...} 使用new方式得到一个实例对象 var p=new StdInfo();
注意:class声明的类,类型也是function
示例:
1、变量提升示例
function fn(){
a1=2
var a1
console.log(a1)//输出2
a1=2
let a1
console.log(a1)//报错,因为let不存在变量提升
a1=2
const a1
console.log(a1)//报错,因为const不存在变量提升
}
2、值的改变示例
function fn(){
var a2=4
a2=6
console.log(a2)//输出6
let a2=4
a2=6
console.log(a2)//输出6
const a2=4
a2=6
console.log(a2)//报错,因为const声明的变量不能改变
}
3、const声明必须赋值
function fn(){
var a3;
let b3;
const c3;//报错,因为const声明变量必须赋值
console.log(a3)//输出undefined
console.log(b3)//输出undefined
console.log(c3)//报错,因为const声明变量必须赋值
}
4、function也可看做变量,也存在变量提升的情况
fn()//正常输出0
function fn(){
var fn4=0
console.log(fn4)
}
5、不允许重复声明变量
function fn(){
var a=0
var a=1
console.log(a)//输出1
let a=0
let a=1
console.log(a)//报错,因为let声明不允许重复
const a=0
const a=1
console.log(a)//报错,因为const声明不允许重复
}