一.堆栈的定义 1.栈是一种特殊的线性表.其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行. 结论:后进先出(Last In First Out),简称为LIFO线性表.栈的应用有:数制转换,语法词法分析,表达式求值等 2.队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端称为队头 (Front),队列的操作原则是先进先出的,…
在js中,数组Array是引用类型,直接将数组赋值给一个变量名,二者所指向的地址是一样的. 所以直接复制数组会产生意想不到的结构. 要想解决拷贝一个数组但是对副本的修改不影响原来的数组,有以下方式: //方法1 var a = [1,2,3]; var b = a.slice(); a.reverse; console.log(a);//[3,2,1] console.log(b);//[1,2,3] //方法2 var c = [4,5,6]; var d = c.concat(); c.re…
function prompt() { var answer = prompt("What is your name","") if (answer) { alert("Hello, " + answer + "!"); } } 提示堆栈溢出. 我就纳闷了. 重复測试之后.发现原来函数名不能命名为prompt. function prompttt() { var answer = prompt("What is yo…
浅拷贝的实现 // 浅拷贝函数 var dad = {name:'chen',age:18}; var son = {sex:'男'}; function clone(dad,son){ var son = son || {};//判断s对象是否存在,不存在则定义s为空对象 for (var prop in dad) { son[prop] = dad[prop]; }; return son;//返回s对象 }; print(clone(dad,son)); 打印结果: 但是假如,对象里面有子…
一.理解深拷贝与浅拷贝 如下代码,把 a 的值赋给 b ,修改 b 的值会直接修改到 a 的值,这叫浅拷贝.(其实他们修改的是同一个对象) var a = [1,2,3,4,5]; var b = a; b[2] = 100; console.log(a); //[1,2,100,4,5] console.log(b); //[1,2,100,4,5] 把 obj1 的值赋给 obj2 ,修改 obj2 的值,不会影响到 obj1 的值 ,这叫深拷贝 var obj1 = [1,2,…
1.含义及对比 堆和栈都是运行时内存中分配的一个数据区,因此也被称为堆区和栈区: 二者存储的数据类型和处理速度不同: 堆(heap)用于复杂数据类型(引用类型)分配空间,例如数组对象.object对象:它是运行时动态分配内存的,因此存取速度较慢. 栈(stack)中主要存放一些基本类型的变量和对象的引用,其优势是存取速度比堆要快,并且栈内的数据可以共享,但缺点是存在栈中的数据大小与生存期必须是确定的,缺乏灵活性. 2.例子 栈 var a=3; var b=3;先处理 var a=3;,首先会在…
1.javascript的数组API Js代码 收藏代码 //定义数组 var pageIds = new Array(); pageIds.push('A'); 数组长度 pageIds.length; //shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b:1 //unshift:将参数添加到原数组开头,并返回数组的长度 var a = [1,2…