之前我们在写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的区别及相关面试题讲解
# 报错
# 不存在
# 全局变量
# 最前面
# 这是
# 如果你
# 来了
# 都在
# 就不
# 模式下
# 可以用
# 不可以
# 可以通过
# 不受
# 只在
# 一个重要
# 三点
# 会将
# 再看看
# 先说
相关文章:
建站之家VIP精选网站模板与SEO优化教程整合指南
已有域名建站全流程解析:网站搭建步骤与建站工具选择
一键网站制作软件,义乌购一件代发流程?
如何通过IIS搭建网站并配置访问权限?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
建站之星后台管理如何实现高效配置?
Android滚轮选择时间控件使用详解
专业商城网站制作公司有哪些,pi商城官网是哪个?
长沙企业网站制作哪家好,长沙水业集团官方网站?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何用花生壳三步快速搭建专属网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
如何通过老薛主机一键快速建站?
购物网站制作公司有哪些,哪个购物网站比较好?
制作销售网站教学视频,销售网站有哪些?
网站微信制作软件,如何制作微信链接?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
视频网站制作教程,怎么样制作优酷网的小视频?
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何在云主机快速搭建网站站点?
建站之星后台管理系统如何操作?
历史网站制作软件,华为如何找回被删除的网站?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
网站制作的步骤包括,正确网址格式怎么写?
如何在Golang中指定模块版本_使用go.mod控制版本号
大学网站设计制作软件有哪些,如何将网站制作成自己app?
制作旅游网站html,怎样注册旅游网站?
建站之星如何快速生成多端适配网站?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
网站按钮制作软件,如何实现网页中按钮的自动点击?
非常酷的网站设计制作软件,酷培ai教育官方网站?
简单实现Android验证码
建站之星如何优化SEO以实现高效排名?
家具网站制作软件,家具厂怎么跑业务?
建站之星安装后如何配置SEO及设计样式?
如何在阿里云通过域名搭建网站?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何在IIS中新建站点并解决端口绑定冲突?
宁波自助建站系统如何快速打造专业企业网站?
建站之星ASP如何实现CMS高效搭建与安全管理?
MySQL查询结果复制到新表的方法(更新、插入)
建站主机服务器选购指南:轻量应用与VPS配置解析
Swift中循环语句中的转移语句 break 和 continue
网站制作网站,深圳做网站哪家比较好?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
已有域名如何快速搭建专属网站?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
*请认真填写需求信息,我们会在24小时内与您取得联系。