基礎類型有哪些?復雜類型有哪些?有什么特征?
答:
- 基礎類型:包含數值、字符串、布爾值、null、undefined是保存在棧內存中的簡單的數據段,容量有限,只能保存簡單數據。
- 復雜類型:包含對象、函數、數組、正則保存在內存中的對象,就像在一塊荒地上劃分了一塊地方存儲,變量值保存了這個地方的指針(坐標),指向存儲的內存。
- 特征:基礎類型可以按照變量值進行賦值,而復雜類型得通過指針來賦值的,當變量相同時指向的是同一個對象,對象改變的話兩個變量都會改變。
如下代碼的輸出? 為什么?
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);//此時obj1與obj2指針指向的對象不同,所以false
console.log(obj1 = obj2);//將obj2的指針賦值給obj1,返回的是obj1的對象
console.log(obj1 == obj2);//它倆指向同一個對象,所以ture
寫一個函數getIntv,獲取從當前時間到指定日期的間隔時間
function addClass(obj,val) {
var classArr = obj.calssName.split(" ");
for(var i=0;i<classArr.length;i++){
if( val === classArr[i]){
classArr.splice(classArr[i],1);
return classArr.join(" ");
}
}
var str = getIntv("2016-09-10");
console.log(str);
function getIntv(times){
var time = Date.parse(times) - Date.now();
time = Math.round(time/1000);
var day = Math.floor(time/3600/24);
var hour = Math.floor((time - day*24*3600)/3600);
var minute = Math.floor((time - day*24*3600 - hour*3600)/60)
var second = Math.floor((time - day*24*3600 - hour*3600 - minute*60))
return ("距目標日期還有"+day+"天"+hour+"時"+minute+"分"+second+"秒")
}
把數字日期改成中文日期
var str = getChsDate('2015-01-08');
function getChsDate(str){
var ChsDate =[ '零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一'];
var TimesStr = str.split("-")
var year = TimesStr[0]
var mouth = TimesStr[1]
var day = TimesStr[2]
return ChsDate[year[0]]+ChsDate[year[1]]+ChsDate[year[2]]+ChsDate[year[3]] + "年" +ChsDate[Math.abs(mouth)]+"月" + ChsDate[Math.abs(day)]+"日"
}
console.log(str);
寫一個函數獲取n天前的日期
var lastWeek = getLastNDays(7); // ‘2016-01-08’
var lastMonth = getLastNDays(30); //'2015-12-15'
function getLastNDays(n){
var time = "";
var a = new Date(Date.now()-3600241000*n);
var year =a.getFullYear();
var month =a.getMonth()+1;
var day = a.getDate();
time = year+"-"+month+"-"+day;
return time;
}
getLastNDays(7);
#####完善如下代碼,用于獲取執行時間如:
var Runtime = (function(){
//code here ...
var obj = {
start: function(){
presentTime = Date.now();
},
end: function(){
endTime = Date.now();
},
get: function(){
return endTime-presentTime;
}
};
return obj;
}());
Runtime.start();
for (var i=0;i<1000;i++)
console.log(i)
Runtime.end();
console.log( Runtime.get() );
#####樓梯有200級,每次走1級或是2級,從底走到頂一共有多少種走法?用代碼(遞歸)實現
function fn(n){
if (n === 1){
return 1
}else if(n === 2){
return 2
}else{
return fn(n-1)+fn(n-2)
}
}
#####寫一個json對象深拷貝的方法,json對象可以多層嵌套,值可以是字符串、數字、布爾、json對象中的任意項
var obj ={
name:"syc",
sex:"nan",
age:23,
like:{
"game":"dota",
}
}
function objCopy(obj){
var obj1={};
for( key in obj){
if (typeof obj[key]==="object"){
obj1[key] = objCopy(obj[key])
}
else{
obj1[key]=obj[key]
}
}
return obj1;
}
objCopy(obj)
**本文版權歸本人和饑人谷所有,轉載請注明來源。**