[JavaScript]JS中的变量声明与有效域
2024-08-27 19:04:01
1.变量声明
var a = 1; //使用var声明变量
b = 1; //不使用var
第一种情况,在当前域中声明一个名为a的变量,如果实在方法内则为局部变量,若在最外层声明则a为全局变量。
第二种情况,实际上是赋值操作,执行代码时会先在当前域寻找是否存在名为b的变量,若没有则到外面一层寻找,直到跳到最外面的那层,如果在任何域中还是没有。就会在最外层的对象创建一个名为b的属性并赋值为1。所以b实际上是全局对象(在客户端的JavaScript中,在浏览器窗口中的所有JavaScript代码中,Window对象充当了全局对象。)的一个属性,而算不上变量。
并且JS中变量是不可以被删除的,但b作为全局变量的一个属性是 可以被删除的。
事实上,Javascript的变量声明、创建属性以及每个Javascript中的每个属性都有一定的标志说明它们的属性----如只读(ReadOnly)不可枚举(DontEnum)不可删除(DontDelete)等等。
由于变量声明自带不可删除属性,比较var num = 1 跟 num = 1,前者是变量声明,带不可删除属性,因此无法被删除;后者为全局变量的一个属性,因此可以从全局变量中删除。
最新文章
- 1编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。2编写一个Java项目,定义包,在包下定义包含main方法的类。
- 【leetcode】Rotate Image
- MySQL 5.6 Warning: Using a password on the command line interface can be insecure
- Mixing Delphi and C++(相互调用)
- 基于 SOA 的组件化业务基础平台
- Linux多线程编程(不限Linux)
- 【设计模式 - 21】之空对象模式(Null Object)
- 基于SOAP的xml网络交互心得
- Eclipse用法和技巧六:自动生成get和set方法1
- 处理MySQL服务器无法启动的问题
- 【转】jQuery代码片段备用
- 使用JConsole以及VisualVM进行jvm程序的监控,排错,调优
- EXCLE 导入 或 导出
- python之模块使用
- 分析hello1项目里面的web.xml
- Linux_Centos7_设置MySql定时备份
- Python: 序列: 过滤序列元素
- leetcode973
- 【转载】MSXML应用总结 开发篇(上)
- implement min heap
热门文章
- arcgis api for javascript - 最基本的地图加载
- 解决Maven 报 Return code is: 400 , ReasonPhrase:Repository version policy: SNAPSHOT does not allow version: 2.1.0.RELEASE. 的错误
- maoaolianxi
- 二、Flex 布局教程:实例篇
- CCF201409-1相邻数对
- 如果Android的jar包导入错误,怎么修改呢?
- SQL Server ->;>; WITH RESULT SETS子句
- windows的共享内存
- QT的动图加载
- 一个典型的后台软件系统的设计复盘——(二)如何id一个事物