JavaScript 值和引用、构造函数和函数直接量的补充说明

  和其它语言一样,JavaScript对值和引用的操作对数据的影响大相径庭。
                                         使用值                                                     使用引用
                 复制            实际复制的是值,存在两个不             复制的只是对值得引用。如果通过这个新的引用
                                     同的、独立的副本                                 修改了数值,这个改变对原始的引用来说也可见
 
                 传递            传递给函数的是值的一个独立             传递个函数的是对数值的一个引用。
                                     的副本,对它的改变在函数外             如果通过传递给它的引用修改了数值
                                     部没有影响                                             这个改变在函数外部可见

                 比较            比较的两个独立的值(通常逐                比较的是两个引用,以判断它们引用
                                     字节比较),以判断它们是否                的是否是同一个数值。对两个不同的
                                     相同                                                         数值的引用不相等,即使两个值相等

  在JavaScript中,对基本类型的数据操作使用值,对引用类型的数据操作使用引用。需要注意的是,字符串在JavaScript中操作使用的是值(C、C++和Java中都是使用类型引用)。 

  Function()构造函数和函数直接量存在重要差别:
  首先,构造函数Function()允许在运行时动态创建和编译JavaScript代码,而函数直接量却是程序结构的一格静态部分,就像function语句。
  其次,作为第一个差别的必然结果,每次调用构造函数Function()时都会解析函数体并创建一个新的函数对象。
  第三,使用Function()构造函数创建的函数不使用词法作用域,相反,它们总是被当作顶级函数编译。如
     var y = "global";
     function a(){
         var y = "local";
         return new Function("return y"); //不捕捉局部作用域
     }
     alert(a()); //显示"global"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值