例子一,验证 var 的重复声明:
1 2 3 |
|
- 首先是声明变量 a ,初始化为1
- 紧接再次声明变量 a, 初始化为2
- 最后声明变量 b , 它初始化值是 a + 1
例子二,验证 let 的重复声明:
1 2 |
|
1 2 |
|
- 很显然在同一个执行环境中使用 let 进行声明的变量是不能重复声明,否则会抛出错误
const 和 let 在重复声明方面的表现是一致
作用域的范围
- var 的作用域是以函数为界限
- let 和 const 是块作用域
- var 可以定义全局变量和局部变量,let 和 const 只能定义局部变量
封装一个阶乘函数来举例,没有使用尾递归,就是使用 for 和 if 的搭配实现
例子一,阶乘函数验证作用域域范围:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
const 和 let 在作用域的范围的表现也是一样
例子二,验证 const 的作用域:
1 2 3 4 5 |
|
例子三,验证 var 可以定义全局变量,let 和 const 只能定义局部变量
// 可以挂载到全局作用域上 // var name = 'window scoped'; let name = 'let scoped'; //是不挂载到全局作用域中 let obj = { name: 'myName', sayName () { return function () { console.log(this.name); // 打印出来为空 }; } } obj.sayName()(); console.log(window); //name 这个属性的值没有,如下图
若这样改一下就可以得到我们想要的值:
- 把用 var 定义的 name 的代码取消注释,把用 let 定义的 name 的代码注释。
这个同时也涉及到新问题 this 的指向。后面的文章再详细举例验证
const 的特殊之处
const 与 let , var 其实还是有些地方不一样的
例子1:验证 const 的特殊之处(一)
1 2 |
|
- 经过 const 方式进行声明,之后赋值完毕,则不可以进行改变,否则会报错
但是也有例外
例子二:验证 const 的特殊之处(二)
const obj = { name: 'xiaoMing', sayName () { return this.name } }; obj.sayName(); // xiaoMing obj.name = 'xiaoHong'; obj.sayName(); // xiaoHong
- 使用 const 首先声明一个变量 obj , 并且这个变量指向我们在内存中创建的对象,你会发现我们改变里面的属性是没有任何问题
若这样改一下:
例子三:验证 const 的特殊之处(三)
const obj = { name:'xiaoMing', sayName(){ return this.name } }; obj = {}; // Uncaught TypeError: Assignment to constant variable
- 若改变该变量的指向的对象,则就会报错。这种错误和 「 验证 const 的特殊之处(一)」的错误是一样的
更多编程相关知识,请访问:编程视频!!
以上就是javascript声明变量的4种方法是什么的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《javascript》频道 >>
Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者