网站首页 > 基础教程 正文
var是JavaScript在ES6之前使用的变量定义关键字。通过var声明的变量,会挂载在当前定义的函数执行上下文。若在最外层定则变量就挂载在全局执行上下文,即window对象下。而const和let则是ES6中提出的定义变量或常量关键字,其中const用于声明常量,let则是用于声明局部变量关键字。
var
var定义的变量可以修改,不强制要求初始化,未初始化则输出undefined。简单使用如下:
var a = 1; //此处声明的变量a为全局变量
function foo(){
var a = 2;//此处声明的变量a为函数foo的局部变量
console.log(a);//2
}
foo();
console.log(a);//1
特点:
- 存在变量提升
- 可多次声明,后面声明会覆盖之前的声明
- 函数声明var变量会有隔离的效果,这时该变量为局部变量,外部无法访问
let
let是ES6之后提出的用于声明局部变量。其作用域为代码块区域,let的使用示例如下:
let a = 1;
console.log(a);//1
console.log(b);//Uncaught ReferenceError: b is not defined
let b = 2;
function foo(){
let a = 1;
let a = 2;//Uncaught SyntaxError: Identifier 'a' has already been declared
}
特点:
- let作用域块状作用域,如函数内或代码块内,如for循环内
- 同一个代码块内不允许重复声明
- 不影响作用域链
- 不同于var的是let不存在变量提升
const
const是和let一样在ES6之后别加入的关键词,const被设计专门用于声明常量,示例如下:
const a = 1;
console.log(a);//1
a = 2;
console.log(a);//Uncaught TypeError: Assignment to constant variable.
特点:
- 块级作用域,和let一样
- 不允许作用域内重复声明
- 值不允许修改,对于引用类型而言不可修改引用类型指向,但可以修改引用类型内部属性值
猜你喜欢
- 2025-03-11 html中滚动字体的设置
- 2025-03-11 HTML爱心特效代码大公开,3步让你的网页浪漫满屏!
- 2025-03-11 进阶前端高级攻城狮:使用单体模式设计原生js插件
- 2025-03-11 10个最佳开源JavaScript模板引擎
- 2025-03-11 使用Node.js和PNG.js处理PNG图片,提取精灵图并生成CSS
- 2025-03-11 nginx的internal指令
- 2025-03-11 深入探索 AngleSharp:HTML 解析的利器
- 2025-03-11 JavaScript 中 var, let, const 的区别?
- 2025-03-11 Vue进阶(七十九):使用postMessage实现父子通信
- 2025-03-11 自建开源IT资产管理系统itop并实现高可用架构
- 03-12Java程序员Python学习指南(中篇)
- 03-12从IO到NIO:Java数据传输的进阶之路
- 03-12智能库存管理系统:让仓库管理变得简单高效
- 03-12java IO知识体系
- 03-12还不理解 Error 和 Exception 吗,看这篇就够了
- 03-12在Java里如何读取文件
- 03-12FileReader
- 03-12C语言指针专题第11讲:结构体指针
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)