zoukankan      html  css  js  c++  java
  • [JavaScript]JS中的变量声明与有效域

    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,前者是变量声明,带不可删除属性,因此无法被删除;后者为全局变量的一个属性,因此可以从全局变量中删除。


     

     

  • 相关阅读:
    接口的故事
    Bash CookBook(一)--基础
    Spring学习笔记(四)--MVC概述
    Spring学习笔记(三)--Convert System设计
    java web框架发展的新趋势--跨界轻型App
    由Strurts2漏洞引开谈谈web代码安全问题
    Java线程同步之一--AQS
    Android Studio 0.4 + PhoneGap 3.3 开发环境的搭建
    redis的多线程
    原电商设计框架
  • 原文地址:https://www.cnblogs.com/keenoooo/p/10295048.html
Copyright © 2011-2022 走看看