笔试题答案
alert(1&&2)输出的结果值是?
输出结果应该是2,在js中,关系运算符并不一定会返回boolean值,根据传入值的类型不同会返回不同的值。
可以返回对象、null、undefined、数值(NaN)、字符串、Boolean值;另外其属于短路操作;
有如下函数:
Sum(2,3) =>5 Sum(2)(3)=>5
请写出sum函数的具体实现。
(function(){ var Sum = function(x){ if(arguments.length===2){ return arguments[0]+arguments[1]; }else if (arguments.length===1) { return function(j){ return x+j; }; } }; alert(Sum(2,3)); alert(Sum(2)(3)); return { Sum: Sum }; })();
请编写函数计算从整数1到n共出现多少个0.
(function(){ var total = function(n){ var Sum0 = 0; for (var i = 0; i < n; i++) { var nstr = i.toString(); var lengthOfNo0 = nstr.replace(/0/,"").length; var length0 = nstr.length - lengthOfNo0; Sum0 += length0; } return Sum0; }; alert(total(1000)); })();
请使用DOM操作来添加、移除、替换、插入、创建和查找节点。
var elem = document.createElement("div"); document.appendChild(elem); docmment.removeChild(elem); document.replaceChild(elem,removedElem); document.inserteBefore(elem,relativeElem); document.getElementById("id");
请用原生JavaScript代码实现一个函数,功能是对JS对象的深度克隆。
//js深度克隆 //浅复制 var shallowCopy = function(obj){ var objCopy = {}; for(var name in obj){ if (obj.hasOwnProperty(name)) { objCopy[name] = obj[name]; } } return objCopy; }; //深复制 var deepCopy1 = function(obj){ var objCopy = {}; objCopy = JSON.parse(JSON.stringify(obj)); return objCopy; }; var deepCopy2 = function deepCopy(obj,objCopy){ objCopy = objCopy||{}; for(var name in obj){ if (typeof obj[name] === "object") { objCopy[name] = obj[name] instanceof Array?[]:{}; deepCopy(obj[name],objCopy[name]); }else{ objCopy[name] = obj[name]; } } }; // 测试 var a = { name: "class1", number : 54, student: { "201421" : { name: "sunliying", age: 21 }, "201422" :{ name: "yan", age: 22 } }, teacher: ["yangming","mudao"] }; var b = {}; console.log(shallowCopy(a)); //注意,浅复制对对象是引用的,所有复制来的对象都指向同一个对象 console.log(deepCopy1(a)); deepCopy2(a,b); console.log(b);