<script> var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x);// --> undefined console.log(b.x);// --> [object Object] </script> 上面的例子看似简单,但结果并不好了解,很容易把人们给想绕了——“a.x不是指向对象a了么?为啥log(a.x)是undefined?”.“b.x不是应该跟a.x是一样的么?为啥log出来居然有2个对象”…
var a = {n: 1}; var b = a; a.x = a = {n: 2}; console.log(a.x); console.log(b.x); 有道题是这样的,觉得很奇葩,分析一下 1.对象 引用类型 对象属于引用类型,c,java,js里面都是的,对象就是引用类型,包括数组. 上面的a是引用类型,a保存的是对象 {n: 1}的地址,对这个对象的引用.b = a .把a里面的地址赋值给了b,b也指向{n: 1}这个对象的物理地址.所以,a 一旦做赋值更改,修改的是a对引用的修改…
前言 数组作为JS中非常常用的引用类型,其功能是非常强大滴,今天小猪就彻底的看了下它.为了防止猪脑子不够用所以记录在案呐 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值 要说明的…
这个问题说大不大说小不小,如果你有幸踩了这个坑,一定会找这篇文章,哈哈~ 现说一下JS数字的类型:基本类型和引用类型 先看下下面两个栗子: var a = 30; var b = a; a = 20; console.log( b ) // 30 var a = [1,2]; var b = a; a[0] = 5; console.log( b ) // [5,2] 简单的说: number,string类型都是基本类型,而基本类型存放在栈区,访问时按值访问,赋值是按照普通方式赋值: 对象和数…
//js $(function(){ var name=""; var kmname=[]; var n= $("input[type=checkbox]").click(function(){ kmname.length=0; $("input[name=\"inputcheck\"]:checked").each(function(){ kmname.push($(this).val()); }) name=kmname.…
先来看一段代码: (function(){ var x = y = 1; })(); console.log(y); console.log(x); 最开始我觉得这道题简直是送分题啊,很明显结果为,y=1;x=1 然后当我在控制台输出以后,感觉一记响亮的耳光,输出结果: 结论:上面的结果是因为变量提升和连等赋值造成的. 分析:上面的 var x=y=1 容易理解为var x=y,var y=1; 因为这里使用了连等赋值,连等操作符赋值是从右向左的,相当于 y=1; var x =y; 然后又因为…
引用类型定义: 描述一类对象具有的属性和方法 引用类型Object ,也就是我们常说的对象类型了,这应该是JavaScript中最常见的引用类型了. 对象是某个引用类型的实例,如何创建一个实例,也就是创建一个对象 (1) var person = new Object() 这种就创建了一个对象 通过new + 构造函数形式 ,创建一个Object实例赋给person (2)一种是字面量对象方法,也就是直接初始化 var p = { name: 'bob', age: 18 } var p = {…