關(guān)于JS基礎(chǔ)類(lèi)型啦逆、復(fù)雜類(lèi)型的總結(jié)罢艾;
- 基礎(chǔ)類(lèi)型(5種)
包括: Undefined萝玷、Null、String昆婿、Boolean球碉、Number
值:由簡(jiǎn)單的數(shù)據(jù)段構(gòu)成;
訪(fǎng)問(wèn)類(lèi)型:按值訪(fǎng)問(wèn)仓蛆,可操作保存在變量中的實(shí)際值睁冬;
var a=1;
var b=2;
b=a;
console.log(a) // 1
console.log(b) // 1
- 復(fù)雜類(lèi)型
包括:Object、Arrar、Date豆拨、Function等
值:由多個(gè)值構(gòu)成的對(duì)象直奋;
訪(fǎng)問(wèn)類(lèi)型:在操作對(duì)象時(shí),實(shí)際上是對(duì)于對(duì)象的引用施禾,而不是實(shí)際值脚线;
var arr1=[1,2,3,4,5];
var arr2=arr1;
arr1.push(6);
arr2 //[1,2,3,4,5,6]
- ####如下代碼的輸出? 為什么?
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2); //false,obj1與obj2兩者沒(méi)有關(guān)系弥搞,操作數(shù)不指向同一對(duì)象
console.log(obj1 = obj2); // 返回obj1的對(duì)象邮绿,Object {a:1,b:2}
console.log(obj1 == obj2); // true,由于上一步,obj2賦值給obj1攀例,意思是說(shuō)obj1指向obj2的內(nèi)存空間船逮,兩者變?yōu)橥粚?duì)象;
- ####獲取從當(dāng)前時(shí)間到指定日期的間隔時(shí)間(demo)
function getIntv(date){
var d=new Date(date);
var a=new Date(date)-Date.now();
var day= Math.floor(a/1000/60/60/24);
var hour=Math.floor((a-day*1000*60*60*24)/1000/60/60);
var min=Math.floor((a-(day*24+hour)*1000*60*60)/1000/60);
var sec=Math.floor((a-(day*24*60*60*1000+hour*60*60*1000+min*60*1000))/1000);
var result= '距離雙十一剩余 '+day+'天 '+hour+'小時(shí) '+min+'分鐘 '+sec+'秒';
return result;
}
getIntv('2016-11-11')
![](http://upload-images.jianshu.io/upload_images/2755981-3a1054183d97eb9d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- ####把數(shù)字日期改成中文日期(demo)
var str = getChsDate('2015-01-08');
function getChsDate(str){
var d=new Date(str),
arrchina=['零','一','二','三','四','五','六','七','八','九','十'],
year=d.getFullYear(),
month=d.getMonth(),
date=d.getDate(),
str="";
var arryear = year.toString().split("");
for(var i=0;i<4;i++){
str+=arrchina[arryear[i]];
}
str=str+"年";
if(month<10){
str=str+arrchina[month+1];
}else if(month>9){
str=str+arrchina[10]+arrchina[month-9];
}else if(month=10){
str=str+arrchina[10];
}
str=str+"月"
if(date<11){
str=str+arrchina[date];
}else if(date<20){
str=str+(arrchina[10]+arrchina[date-10]);
}else if(date<30){
str=str+("二十"+arrchina[date-20]);
}else if(date<32){
str=str+("三十"+arrchina[date-30]);
}
str=str+"日"
return str;
}
console.log(str);
![](http://upload-images.jianshu.io/upload_images/2755981-3b21f076c01eca3a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- ####寫(xiě)一個(gè)函數(shù)獲取n天前的日期
function getlastDays(number){
var d=new Date();
var a=new Date(d.getTime()-number*24*60*60*1000);
var year=a.getFullYear();
var month=a.getMonth()+1;
var date=a.getDate();
result=year+"-"+ month +"-"+ date;
return result;
}
![](http://upload-images.jianshu.io/upload_images/2755981-f796bb7b23df661c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- ####寫(xiě)一個(gè)函數(shù)用于獲取執(zhí)行時(shí)間粤铭,用于獲取執(zhí)行時(shí)間如
var Runtime = (function(){
var startime=0;
var endtime=0;
var obj = {
start: function(){
startime=Date.now();
},
end: function(){
endtime=Date.now();
},
get: function(){
var gettime=endtime-startime;
return gettime;
}
};
return obj;
}());
Runtime.start();
for(var i=0;i<10000;i++){
console.log(1);
}
Runtime.end();
console.log( Runtime.get() );
![](http://upload-images.jianshu.io/upload_images/2755981-7eab32ab4d4f44c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- ####樓梯有200級(jí)挖胃,每次走1級(jí)或是2級(jí),從底走到頂一共有多少種走法梆惯?用代碼(遞歸)實(shí)現(xiàn)
function method(num){
var s = 0;
if(num == 1){
return 1;
}
else if(num == 2){
return 2;
}
else {
s= method(num-2) + method(num-1);
}
return s;
}
method(200);
由于數(shù)值較大酱鸭,超出了棧的容量,所以無(wú)結(jié)果
[參考文章](http://chenqx.github.io/2014/09/29/Algorithm-Recursive-Programming/)
- ####寫(xiě)一個(gè)json對(duì)象深拷貝的方法垛吗,json對(duì)象可以多層嵌套凛辣,值可以是字符串、數(shù)字职烧、布爾、json對(duì)象中的任意項(xiàng)
var json1={
"name":["peter","john","may"],
"age":"16",
"school":[
{"eastschool":["es1","es2","es3"]},
{"northschool":["nors1","nors2","nors3"]}
]
}
function copyjson(json){
var copy=[];
for(var key in json){
if(typeof json[key] == "object"||"arrar"){
copy[key]=json[key];
}else{
copy[key]=copyjson(json[key]);
}
}
return copy;
}
copyjson(json1)
本文版權(quán)歸屬本人及饑人谷所有防泵,轉(zhuǎn)載請(qǐng)注明蚀之。