问题
一、基础类型有哪些?复杂类型有哪些?有什么特征?
- 基础类型(数值、布尔值、null和underfined):指的是保存在栈内存中的简单数据段。
- 引用类型(对象、数组、函数、正则):指的是保存在堆中的对象,变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,由该位置保存对象
堆栈
二、如下代码的输出? 为什么?
代码
一、写一个函数getIntv,获取从当前时间到指定日期的间隔时间
function getIntv(str){
var t = Date.parse(str) - Date.now();
var d=Math.floor(t/1000/60/60/24);
var h=Math.floor(t/1000/60/60%24);
var m=Math.floor(t/1000/60%60);
var s=Math.floor(t/1000%60);
var str="距离除夕还有"+d+"天"+h+"小时"+m+"分钟"+s+"秒";
console.log(str);
}
var str = getIntv("2017-1-27");
console.log(str);
二、把数字日期改成中文日期
var str = getChsDate('2015-01-08');
console.log(str); // 二零一五年一月八日
function getChsDate(time){
var a = ['零','一','二','三','四','五','六','七','八','九','十',
'十一','十二','十三','十四','十五', '十六','十七','十八','十九',
'二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一'];
var t = new Date(time);
var n = '';
var year = t.getFullYear() +''; //使数字变成字符串
var month = t.getMonth() + 1;
var date = t.getDate();
for(var i = 0; i < year.length; ++i){
n += a[year[i]];
}
console.log(n + '年' + a[month] + '月' + a[date] + '日');
}
三、写一个函数获取n天前的日期
function getLastNDays(val){
var date = new Date( Date.now() - val * 24 * 60 * 60 *1000 );
return date;
}
四、完善如下代码,用于获取执行时间如:
var Runtime = (function(){
var starttime,endtime, intervaltime;
var obj = {
start: function(){
starttime=Date.now();
return starttime;
},
end: function(){
endtime=Date.now();
return endtime;
},
get: function(){
intervaltime=(endtime-starttime)/1000;
console.log(intervaltime);
}
};
return obj;
}());
Runtime.start();
for(var i=0;i<1000;i++){
console.log(111);
}
Runtime.end();
console.log( Runtime.get() );
五、楼梯有20级,每次走1级或是2级,从底走到顶一共有多少种走法?用代码(递归)实现
function fn(n){
if(n ==1){return 1;}
if(n ==2){return 2;}
return fn(n-1)+fn(n-2);
}
fn(20);
六、写一个json对象深拷贝的方法,json对象可以多层嵌套,值可以是字符串、数字、布尔、json对象中的任意项(PS:尝试另外一种方法 var obj2 = JSON.parse( JSON.stringify(obj1) )
var me = {
"name": "zxy",
"age": 22,
"hobby": {
"game": "lol";
}
}
function dcopy(obj1){
var obj2 = {};
for(var key in obj1){
if(typeof obj1[key] == 'object'){
obj2[key] = dcopy(obj1[key])
}else{
obj2[key] = obj1[key]
}
};
return obj2;
}
//方法二
/*JSON.parse()方法将一个 JSON字符串解析成一个javascript值。
JSON.stringify()方法可以将任意的 JavaScript 值序列化成 JSON 字符串
*/
function dc(obj1){
var obj2 = JSON.parse(JSON.stringify(obj1));
return obj2;
}