zoukankan      html  css  js  c++  java
  • script全局变量

    javascript全局变量的生命周期是:直到页面关闭才失效。否则一直有用。

    方式1

    1
    2
    var test;
    var test = 5;

    需注意的是该句不能包含在function内,否则是局部变量。这是第一种方式声明全局变量。

    方式2

    1
    test = 5;

    没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。

    方式3

    1
    2
    window.test;
    window.test = 5;

    这种方式经常被用到一个匿名函数执行后将一些函数公开到全局。 如JQuery1.5中最末一句

    1
    window.jQuery = window.$ = jQuery;

    如果只是使用变量test,那么三种方式将没有什么区别。比如:alert(test) 都将显示5。但三种方式在某些情况下还是有区别的。分别按以上三种方式声明三个变量a1,a2,a3。

    1
    2
    3
    a1 = 11;
    var a2 = 22;
    window.a3 = 33;

    1,for in window

    1
    2
    3
    4
    5
    for(a in window){
        if(a=='a1'||a=='a2'||a=='a3'){
            alert(a)
        }
    }

    IE6/7/8/9:只弹出了a3,说明通过第一,二种方式声明的全局变量通过for in window时将获取不到。
    Firefox/Chrome/Safari/Opera :a1,a2,a3都弹出了,说明三种方式声明的全局变量,通过for in window时都能获取到。

    2,delete

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try {
        alert(delete a1);
    }catch(e){alert('无法delete a1')}
     
    try{
        alert(delete a2);
    }catch(e){alert('无法delete a2')}
     
    try{
        alert(delete a3);
    }catch(e){alert('无法delete a3')}

      

    结果如下

    可以看到,
    1,delete a2所有浏览器都是false。即通过var声明的变量无法删除,所有浏览器表现一致。这在犀牛书上也有提到。
    2,通过window.a3方式声明的全局变量在IE6/7/8中均无法删除,IE9/Firefox/Chrome/Safari/Opera中却可以。


    虽然有以上两点不同,但当用in运算时,都返回true。

    1
    2
    3
    alert('a1' in window);//true
    alert('a2' in window);//true
    alert('a3' in window);//true

      

    用with打开对象window闭包时,所有浏览器也表现一致,如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    with(window){
        if(a1){
            alert(a1);//11
        }
        if(a2){
            alert(a2);//22
        }
        if(a3){
            alert(a3);//33
        }  
    }
  • 相关阅读:
    84. Largest Rectangle in Histogram (Solution 2)
    84. Largest Rectangle in Histogram (Solution 1)
    73. Set Matrix Zeroes
    【JavaScript】Symbol 静态方法
    【JavaScript】Date
    【JavaScript】Math
    725. Split Linked List in Parts把链表分成长度不超过1的若干部分
    791. Custom Sort String字符串保持字母一样,位置可以变
    508. Most Frequent Subtree Sum 最频繁的子树和
    762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量
  • 原文地址:https://www.cnblogs.com/crhdyl/p/5354384.html
Copyright © 2011-2022 走看看