JavaScript var、let、const
2024-10-21 05:20:28
var
申明的变量是有作用域的
如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量:
'use strict'; function foo() {
var x = 1;
x = x + 1;
}
x = x + 2; // ReferenceError! 无法在函数体外引用变量x
由于JavaScript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,反过来则不行:
'use strict'; function foo() {
var x = 1;
function bar() {
var y = x + 1; // bar可以访问foo的变量x!
}
var z = y + 1; // ReferenceError! foo不可以访问bar的变量y!
}
JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部:
'use strict'; function foo() {
var x = 'Hello, ' + y;
console.log(x);
var y = 'Bob';
} foo();
局部作用域 由于JavaScript的变量作用域实际上是函数内部,我们在for循环等语句块中是无法定义具有局部作用域的变量的: 'use strict'; function foo() {
for (var i=0; i<100; i++) {
//
}
i += 100; // 仍然可以引用变量i
}
let :局部作用变量
为了解决块级作用域,ES6引入了新的关键字let,用let替代var可以申明一个块级作用域的变量: 'use strict'; function foo() {
var sum = 0;
for (let i=0; i<100; i++) {
sum += i;
}
// SyntaxError:
i += 1;
} const:常量
常量
由于var
和let
申明的是变量,如果要申明一个常量,在ES6之前是不行的,我们通常用全部大写的变量来表示“这是一个常量,不要修改它的值”:
var PI = 3.14;
ES6标准引入了新的关键字const
来定义常量,const
与let
都具有块级作用域:
'use strict';
const PI = 3.14;
PI = 3; // 某些浏览器不报错,但是无效果!
PI; // 3.14
详细请参考:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014344993159773a464f34e1724700a6d5dd9e235ceb7c000
最新文章
- link和@import的区别
- opencv中的.at方法
- php第三方登陆
- VC++打开对话框选择一个文件夹路径 BROWSEINFO结构
- android ANR
- Centos 7 通过YUM安装 PHP7 NGINX1.1.8 POSTGRESQL9.5
- POJ 2750 Potted Flower(线段树的区间合并)
- 【转】在PC上测试移动端网站和模拟手机浏览器的5大方法
- haar_adaboost_cascade阅读资料
- 使用镜像仓库托管自己构建的Docker镜像
- 201521123038 《Java程序设计》 第九周学习总结
- Windows 下安装 swoole 具体步骤
- ●BZOJ 4407 于神之怒加强版
- 类似Jquery ui 标签页(Tabs)
- Python 爬虫 之 阅读呼叫转移(一)
- git如何避免push/pull时输入密码
- 巡风源码阅读与分析--querylogic函数
- spring boot + vue + element-ui全栈开发入门
- MT【312】特征根法求数列通项
- (5) 电商场景下的常见业务SQL处理
热门文章
- Sqoop import导入表时报错java.lang.ClassNotFoundException: org.json.JSONObject
- comet oj #7
- python基础01day
- C#使用SMTP协议发送验证码到QQ邮箱
- vue+element-ui上传图片时压缩大小
- python中的exec()函数和eval()函数
- 【Nginx】将http升级到https并且同时支持http和https两种请求
- Tomcat内存溢出解决方法
- 算法——dfs 判断是否为BST
- JAVA之Socket通讯