bol

验证两个数组或者对象是否相同

ⅰ亾dé卋堺 提交于 2019-12-04 20:09:25
/** * 验证两个object 是否相同 * @param {Object} obj [需要进行验证的数据1] * @param {Object} newObj [需要进行验证的数据2] */ function objSame (obj,newObj) { let bol = true; if (Object.keys(obj).length != Object.keys(newObj).length) { return false; } for(let key in obj) { if ( obj[key] instanceof Object) { bol = objSame(obj[key],newObj[key]); if (!bol) { break; } } else if ( obj[key] instanceof Array) { bol = arrSame(obj[key],newObj[key]) if (!bol) { break; } } else if (obj[key] != newObj[key]) { bol = false; break; } } return bol } /** * 验证两个数组是否相同 * @param {Array} arr [需要进行验证的数据1] * @param {Array} newArr [需要进行验证的数据2] *

怎样理解函数参数的传递

北战南征 提交于 2019-11-30 18:17:42
前言: 基本类型(数值 / 字符串 / 布尔值)和引用类型(对象)作为参数传递给函数时的行为是不一样的. 基本类型传递的是值的地址, 它在函数内部的改变不会影响到原变量. 引用类型传递的是引用的地址, 它在函数内部的改变实际上是对原变量的改变. 第一步: 下面演示基本类型的值做实参时的情况 function change(bol){ bol = !bol; console.log(bol) } var a = true; change(a); // false console.log(a); // true; 注意: 这里在函数内部改变了形参的值, 但外部的a的值并没有发生改变. 这是基本类型的特征; 第二步: 下面演示引用类型的值做实参时的情况 function addName(obj) { obj.name = "Lilei"; console.log(obj.name); // Lilei } var person = {}; addName(person); // Lilei console.log(person.name); // Lilei 注意: 这里对象作为实参传递给函数时, 实际传递的是引用, 在函数内部操作的obj指向的内存地址实际上就是person指向的内存地址, 因此其改变会影响obj和person; 来源: https://www.cnblogs.com