《JavaScript高级程序设计》——第四章 变量、作用域和内存管理

  • JavaScript变量可以用保存两种类型的值:基本类型值引用类型值。基本类型的值源自以下基本类型数据:Undefined、Null、Boolean、Number和String。
  • 从一个变量向另一个变量复制引用型类型的值,复制的其实是指针,因此两个变量最终指向同一个变量。
  • 确认一个值是哪种引用类型可以用instanceof操作符。
  • JavaScript是一门拥有自动回收垃圾机制的语言
  • JavaScript没有块级作用域

JavaScript中可以为引用类型值动态添加属性

        var person = new Object();
        person.name = "Nicholas";
        alert(person.name);    //"Nicholas"

引用值作为函数参数,向函数传递的是值,但会访问实参

        function setName(obj) {
            obj.name = "Nicholas";
        }
        
        var person = new Object();
        setName(person);
        alert(person.name);    //"Nicholas"

重写函数内部的对象时,变量引用的就是一个局部变量了

        function setName(obj) {
            obj.name = "Nicholas";
            
            obj=new Object();
            obj.name="Greg";
        }
        
        var person = new Object();
        setName(person);
        alert(person.name);    //"Nicholas"        

在函数内用var声明的变量是局部变量,没有用变量前面没用var声明的是全局变量

        function add(num1, num2) {
            var sum = num1 + num2;
            return sum;
        }
        
        var result = add(10, 20);  //30
        alert(sum);                //causes an error since sum is not a valid variable
        function add(num1, num2) {
            sum = num1 + num2;
            return sum;
        }
        
        var result = add(10, 20);  //30
        alert(sum);                //30

查询标识符搜索的过程是从作用域前端开始,向上逐级查询与给定名字匹配的标识符

        var color = "blue";
        
        function getColor(){
            return color;
        }
        
        alert(getColor());  //"blue"

如果局部变量存在着同名标识符,就不会使用父环境中的标识符

        var color = "blue";
        
        function getColor(){
            var color = "red";
            return color;
        }
        
        alert(getColor());  //"red"

猜你喜欢

转载自www.cnblogs.com/WP-WangPin/p/12764940.html