广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买
本篇文章给大家带来了关于JavaScript的相关知识,其中主要给大家介绍了var、let以及const的区别有哪些,还有ECMAScript 和 JavaScript的关系介绍,感兴趣的朋友一起来看一下吧,希望对大家有帮助。
什么是JavaScript?
首先,ECMAScript 和 JavaScript 什么关系?
var、let、const的区别?
1. var声明变量存在变量提升
,let和const不存在变量提升
console.log(a); // undefined ===> a已声明还没赋值,默认得到undefined值console.log(b); // 报错:b is not defined ===> 找不到b这个变量console.log(c); // 报错:c is not defined ===> 找不到c这个变量var a = 100;let b = 10;const c = 10;console.log(a);//a=100登录后复制
2. let和const只能在块作用域里访问
if(1){ var a = 100; let b = 10; const c = 1;}console.log(a); // 100console.log(b) // 报错:b is not defined ===> 找不到b这个变量console.log(c) // 报错:c is not defined ===> 找不到c这个变量登录后复制
3. 同一作用域下let和const不能声明同名变量,而var可以
var a = 100;console.log(a); //控制台输出 100var a = 10;console.log(a); //控制台输出 10let a = 100;let a = 10;// 控制台报错:Identifier 'a' has already been declared ===> 标识符a已经被声明了。登录后复制
4. const定义常量,而且不能修改,但是在定义的对象时对象属性值可以改变
const a=2 a=3 console.log(a) //控制台报错登录后复制
const person = { name : 'make', sex : '男'}person.name = 'test'console.log(person.name) //运行发现控制台没有报错,且 person.name 被成功修改登录后复制
????这是怎么回事呢?
因为对象是引用类型的,person中保存的仅是对象的指针,而修改对象的属性不会改变对象的指针,所以这种情况就会修改成功。也就是说const定义的引用类型只要指针不发生改变,都是被允许的。
接下来我们试着修改一下指针,让person指向一个新对象,最后果然报错
const person = { name : 'make', sex : '男'}person = { name : 'test', sex : '男'}console.log(person.name) //控制台报错登录后复制
5. 小结
var定义的变量,变量提升,没有块的概念,可以跨块访问。
let定义的变量,只能在块作用域里访问,不能声明同名变量。
const用来定义常量,使用时必须初始化(即必须赋值),不能声明同名变量,只能在块作用域里访问,而且不能修改,但是在定义的对象时对象属性值可以改变。
他们都不能跨函数访问
推荐学习:《JavaScript视频教程》
以上就是一起聊聊var、let以及const的区别(代码示例)的详细内容,更多请关注9543建站博客其它相关文章!
发表评论