本文摘自PHP中文网,作者青灯夜游,侵删。
javascript声明变量的4种方法:1、使用“var”声明变量,例“var a;”;2、使用“function”声明变量,例“function Fun (num) {}”;3、使用“let”声明变量;4、使用“const”声明变量。
本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。
声明变量的方式
JavaScript 变量声明的方式有下面几种:
- ES6之前是 var 和 function
- ES6中新增 let 和 const
function 是一种声明变量的方式?
我们来验证一下
验证方法一:
1 2 3 4 5 6 7 8 9 |
|
这种方法是利用 var可以重复声明变量,但是会后者覆盖会覆盖前者的特点
我们来看看这里发生来什么事:
- 首先是声明了一个函数,他的名字是 repeatFun
- 紧接调用一次,得到结果为10
- 之后用 var 又声明了一次 repeatFun , 并初始化为 1
- 最后调用一次 repeatFun 这个函数
- 结果就是报错 ,内容: repeatFun 不是一个函数
根据执行结果我们可以推断出在浏览器的内存中存在一个 repeatFun 变量,之前是一个函数,后来被一个 var 关键字重新声明并初识化为 1。
验证方法二:
1 2 3 4 5 6 7 |
|
第二种方法我是利用
ES6的一个语法:利用 let 不能重复声明的特性来证明 function 也是一种声明变量的方式
var ,let , const 的不同点:
变量声明提升
- var 有变量声明提升的功能,可以先使用然后再声明,反之也成立
- let 和 const 则没有变量声明提升的功能,必须要先声明才能使用
重复声明
- var 能重复声明,后者覆盖前者
- let 和 const 则不能重复声明
作用域的范围
- var 的作用域是以函数为界限
- let 和 const 是块作用域
- var 可以定义全局变量和局部变量,let 和 const 只能定义局部变量
const 的特殊之处
- 声明之后不能被修改(引用类型和基本类型的表现有些地方不一样)
变量声明提升
- var 是有变量声明提升的功能,可以先使用然后再声明
- let 和 const 则没有变量声明提升的功能,必须要先声明才能使用
例子一,验证 var 变量提升:
1 2 |
|
首先是先声明来一个变量 b 并进行初识化,初始化的值为 a + 1(a 的值是多少?)
然后紧接是声明了一个变量 a ,初识化为 1
这是代码表面上就是做着这些事,实际上做的事情是这样:
- 在每次声明一个变量的时候,他们的声明都是放在代码的最上面,并且他们都是要进行一次初始化,值为:undefined,但是赋值的位置是不会改变,
- 然后再进行其他的操作
下面写法同样可以实现一样的效果
1 2 3 4 5 |
|
let 和 const 则与 var 的表现则不同
例子二,验证 let 是否存在变量提升:
1 2 |
|
在运行的时候直接抛出范围错误,若这样改一下,就没有错误:
1 2 |
|
const 和 let在变量提升方面的表现是一致
重复声明
- var 能重复声明,后者覆盖前者
let 和 const 则不能重复声明
相关阅读 >>
更多相关阅读请进入《javascript》频道 >>
书籍 Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者