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. 1编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。2编写一个Java项目,定义包,在包下定义包含main方法的类。
  2. 【leetcode】Rotate Image
  3. MySQL 5.6 Warning: Using a password on the command line interface can be insecure
  4. Mixing Delphi and C++(相互调用)
  5. 基于 SOA 的组件化业务基础平台
  6. Linux多线程编程(不限Linux)
  7. 【设计模式 - 21】之空对象模式(Null Object)
  8. 基于SOAP的xml网络交互心得
  9. Eclipse用法和技巧六:自动生成get和set方法1
  10. 处理MySQL服务器无法启动的问题
  11. 【转】jQuery代码片段备用
  12. 使用JConsole以及VisualVM进行jvm程序的监控,排错,调优
  13. EXCLE 导入 或 导出
  14. python之模块使用
  15. 分析hello1项目里面的web.xml
  16. Linux_Centos7_设置MySql定时备份
  17. Python: 序列: 过滤序列元素
  18. leetcode973
  19. 【转载】MSXML应用总结 开发篇(上)
  20. implement min heap

热门文章

  1. arcgis api for javascript - 最基本的地图加载
  2. 解决Maven 报 Return code is: 400 , ReasonPhrase:Repository version policy: SNAPSHOT does not allow version: 2.1.0.RELEASE. 的错误
  3. maoaolianxi
  4. 二、Flex 布局教程:实例篇
  5. CCF201409-1相邻数对
  6. 如果Android的jar包导入错误,怎么修改呢?
  7. SQL Server ->> WITH RESULT SETS子句
  8. windows的共享内存
  9. QT的动图加载
  10. 一个典型的后台软件系统的设计复盘——(二)如何id一个事物