之前我们在写js代码的时候都知道可以用var定义全局变量和局部变量,也可以省略var,而且在非严格模式下不会报错,但是并不知道两者的区别...
var x = 1; y = 4; console.log(x);//1 console.log(y);//4 console.log(window.x);//1 console.log(window.y);//4
简单测试下可以知道定义的x和y都被挂载在window对象上,变为window下的属性,这并不能说明什么...
delete x; delete y; console.log(window.x);//1 console.log(window.y);//undefined
再看看执行上面代码之后x属性没有被删除,y被删除了,这是区别就来了
在通过var进行定义后的变量不能被delete删除,这是什么原因?ECMAScript 5标准中,可以通过Object.getOwnPropertyDescriptor()来获取对象自身某个property的属性信息:
console.log(Object.getOwnPropertyDescriptor(window,"x")); console.log(Object.getOwnPropertyDescriptor(window,"y"));
得到如下信息:
当不使用var进行定义是,变量默认的configurable为true,可以进行delete等命令进行操作,而当var在定义一个全局变量的时候configurable 变为了false,即不会被delete删除.
此外,简单说一下关于变量提升问题
alert(a);//Uncaught ReferenceError: a is not defined a = 100;alert(b);//undefined
var b = 200;先说第二段代码,var声明的全局变量b在js中会进行代码提升,也就是说var b = 200;会被分解为var b;b=200;代码解析的第时候会将var b;提升到最前面,并且在内存中开辟一个空间,由于b没有被赋值,默认为undefined.第一段代码中当js执行alert()函数时候由于没有进行var声明,变量没有被提升,不存在内存开辟,所以在alert时候直接报错!
在ECMAScript6标准中,一个重要的概念就是"JavaScript严格模式",需要在最前面加上"use strict";
let注意点:
1.let拥有块级作用域,一个{}就是一个作用域
2.let在其作用域下面不存在变量提升
3.let在其作用域中不能被重复声明(函数作用域和块级作用域)
第一点:let的块级作用域
注意:以下代码都在严格模式下执行的
let n = 10;
if(true){
let n = 50;
}
console.log(n);//10表示外层代码块不受内层代码块的影响,如果是用var定义的变量n,那么输出的就是修改后的50.
第二点:变量提升问题
alert(a);//Uncaught ReferenceError: a is not defined let a = 100;
不同var,let不存在变量提升,以上写法会直接报错.
第三点:重复声明问题
(function(){
let lTest = "let";
var vTest = "var"
let lTest = "let changed";//Uncaught SyntaxError: Identifier 'lTest' has already been declared
var vTest = "var changed";
console.log(lTest);
console.log(vTest);
})();
let在同一个作用域下不允许进行重复变量声明.否则也是直接报错!!!
const命令
const用来声明常量,一旦声明,其值就不可以更改,如果你非得修改变量的值,js不会报错,只是默默表示失败(不起作用)
const的作用域与let相同,只在声明所在的块级作用域内有效,并且也是和let一样不可以重复进行声明.
# var
# let
# const
# js
# JavaScript中const、var和let区别浅析
# JavaScript ES6中const、let与var的对比详解
# 5分钟快速掌握JS中var、let和const的异同
# 深入浅析var
# const的异同点
# JavaScript中关键字 var、let、const的区别详解
# JavaScript变量声明var
# let.const及区别浅析
# 了解javascript中let和var及const关键字的区别
# js中var
# const的区别及相关面试题讲解
# 报错
# 不存在
# 全局变量
# 最前面
# 这是
# 如果你
# 来了
# 都在
# 就不
# 模式下
# 可以用
# 不可以
# 可以通过
# 不受
# 只在
# 一个重要
# 三点
# 会将
# 再看看
# 先说
相关文章:
全景视频制作网站有哪些,全景图怎么做成网页?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
h5在线制作网站电脑版下载,h5网页制作软件?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
ui设计制作网站有哪些,手机UI设计网址吗?
ppt制作免费网站有哪些,ppt模板免费下载网站?
郑州企业网站制作公司,郑州招聘网站有哪些?
深圳网站制作培训,深圳哪些招聘网站比较好?
如何选择高效稳定的ISP建站解决方案?
制作农业网站的软件,比较好的农业网站推荐一下?
如何在宝塔面板创建新站点?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
*服务器网站为何频现安全漏洞?
建站之星伪静态规则如何设置?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
如何通过远程VPS快速搭建个人网站?
如何选择高效响应式自助建站源码系统?
广东企业建站网站优化与SEO营销核心策略指南
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何选择网络建站服务器?高效建站必看指南
完全自定义免费建站平台:主题模板在线生成一站式服务
制作公司内部网站有哪些,内网如何建网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
定制建站流程步骤详解:一站式方案设计与开发指南
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
建站之星免费模板:自助建站系统与智能响应式一键生成
青浦网站制作公司有哪些,苹果官网发货地是哪里?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何选择适合PHP云建站的开源框架?
微信h5制作网站有哪些,免费微信H5页面制作工具?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何在香港服务器上快速搭建免备案网站?
网站制作难吗安全吗,做一个网站需要多久时间?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
建站主机SSH密钥生成步骤及常见问题解答?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何通过虚拟机搭建网站?详细步骤解析
如何通过虚拟主机空间快速建站?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
智能起名网站制作软件有哪些,制作logo的软件?
如何配置IIS站点权限与局域网访问?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
山东云建站价格为何差异显著?
建站主机选择指南:服务器配置与SEO优化实战技巧
建设网站制作价格,怎样建立自己的公司网站?
如何彻底删除建站之星生成的Banner?
南平网站制作公司,2025年南平市事业单位报名时间?
*请认真填写需求信息,我们会在24小时内与您取得联系。