js对象和变量,对象本身是没有名称的,之所以使用变量是为了通过某个名称来称呼这样一种不具名称的对象。
变量分基本变量和引用类型变量。
将基本类型的的值付给变量的话,变量将这个值本身保存起来。
1 <script type="text/javascript"> 2 function p(){ 3 var len=arguments.length; 4 for(var i=0;i<len;i++){ 5 document.write(arguments[i]+"<br/>"); 6 } 7 } 8 var a=123; 9 var b=a; //b把123保存起来,之后b与a没有关系了,操作b不影响a了 10 b++; 11 p(a,b);//123,124 12 //将一个对象赋值给一个变量,其实是把对象的引用赋值给了变量,对象本身是无法赋值给一个变量的 13 var a={x:1,y:2}; //a里存的是对象的引用 14 b=a; //b里存的是变量的引用 或者说地址,而不是变量本身,这时a,b里存的是同一个引用地址,b的操作影响对象 15 b.x++; 16 p(a.x,b.x);//2,2 17 //再比如 18 var a={x:1,y:2}; 19 var b=a; 20 var a={x:2,y:3}; 21 p(b.x);//1 22 </script> 23 //对于交换变量值得函数,可以用javascript1.7里 增强功能 24 <script type="application/javascript;version=1.7"> 25 function swap(a,b){ 26 return [b,a]; 27 } 28 var x=4,y=3; 29 [x,y]=swap[y,x]; 30 p(x,y)//3,4 31 </script>
1 //变量的查找 2 //试图读取没有声明的变量,会引起referenceError异常 3 <script> 4 var a=a||7; //利用对已经声明的变量再次声明不会产生副作用的特性 5 //也可以 6 if(typeof a!==‘undefined‘){ 7 var b=a; 8 }else{ 9 var b=7; 10 } 11 //判断a是否声明(不管赋值与否) 12 if(‘a‘ in this){ 13 var b=a; 14 }else{ 15 b=7; 16 } 17 //然后可以放心用b了 18 </script>
变量和属性的实质上是一样的,不过如果变量和属性本身不存在,在处理方式上有所不同
<script> p(x);//ReferenceError x is not undefined p(this.x);// undefined 访问不存在的属性并不会引起错误 var obj={}; p(obj.x);//undefined p(obj.x.y) //typeError //一般使用 obj.x&&obj.x.y </script> // js不支持函数默认参数在调用函数时不检查实参和形参个数,不一致也不报//任何错误 //可以模拟默认参数 <script> function a(pos){ pos=pos||{x:1,y:2}; return pos.x+pos.y; } </script>
时间: 2024-11-10 01:21:02