我的前端學(xué)習(xí)筆記17——基本類(lèi)型,引用類(lèi)型

一举娩,問(wèn)答

1析校,基礎(chǔ)類(lèi)型有哪些?復(fù)雜類(lèi)型有哪些铜涉?有什么特征智玻?

  • 基礎(chǔ)類(lèi)型:指的是保存在棧內(nèi)存中的簡(jiǎn)單數(shù)據(jù)段。主要包括:數(shù)值芙代,布爾值吊奢,null,undefined纹烹。

  • 特征:解釋如下圖页滚,定義房間一,并在房間一內(nèi)放入a=1,铺呵。然后定義房間二裹驰,房間二完全等于房間一。這是將房間一中的a重新復(fù)制為2片挂,并不會(huì)改變房間二中a=1幻林。

  • 復(fù)雜類(lèi)型(引用類(lèi)型):指的是保存在堆內(nèi)存中的對(duì)象,變量中保存的實(shí)際只是指針音念,指針執(zhí)行內(nèi)存中另一個(gè)位置保存的對(duì)象沪饺。主要包括:對(duì)象,數(shù)組闷愤,函數(shù)整葡,正則。
  • 特征:解釋如下圖肝谭,定義任意門(mén)一掘宪,里面放name=valley,再定義任意門(mén)二完全等于任意門(mén)一蛾扇,但是他們所放到內(nèi)容都被放入空地上,這時(shí)魏滚,改變?nèi)我忾T(mén)一中的name值镀首,任意門(mén)二中的內(nèi)容也被改變。

兩種訪問(wèn)方式:
基本類(lèi)型值:按值訪問(wèn)鼠次,操作的是他們實(shí)際保存的值更哄;
引用類(lèi)型值:按引用訪問(wèn),當(dāng)查詢(xún)時(shí)腥寇,我們需要先從棧中讀取內(nèi)存地址成翩,然后再順藤摸瓜地找到保存在堆內(nèi)存中的值;

兩種類(lèi)型復(fù)制:
基本類(lèi)型變量的復(fù)制:從一個(gè)變量向一個(gè)變量復(fù)制時(shí)赦役,會(huì)在棧中創(chuàng)建一個(gè)新值麻敌,然后把值復(fù)制到為新變量分配的位置上;

引用類(lèi)型變量的復(fù)制:復(fù)制的是存儲(chǔ)在棧中的指針掂摔,將指針復(fù)制到棧中未新變量分配的空間中术羔,而這個(gè)指針副本和原指針執(zhí)行存儲(chǔ)在堆中的同一個(gè)對(duì)象;復(fù)制操作結(jié)束后乙漓,兩個(gè)變量實(shí)際上將引用同一個(gè)對(duì)象级历;因此改變其中的一個(gè),將影響另一個(gè)叭披;

2寥殖,如下代碼的輸出? 為什么?

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
  • 答案:
 false;
 object{a:1; b=1}
 true
  • 解釋?zhuān)?/p>

  • false是因?yàn)閮蓚€(gè)對(duì)象保存的地址不同,相當(dāng)于存在兩個(gè)空地上涩蜘,即使存放的東西相同嚼贡。

  • object{a:1; b=1}是因?yàn)槎xobj1=obj2;

  • true是因?yàn)樯蠗l命令生效,obj1=obj2皱坛,存放地址相同编曼,因此true。

一剩辟,代碼

1,寫(xiě)一個(gè)函數(shù)getIntv往扔,獲取從當(dāng)前時(shí)間到指定日期的間隔時(shí)間

var str = getIntv("2016-01-08");
console.log(str); // 距除夕還有 20 天 15 小時(shí) 20 分 10 秒
  • 答案:
function getIntv(data){
  var distance = Date.parse(data)-Date.now();
  var days = Math.floor(distance/1000/60/60/24);
  var hours = Math.floor((distance-days*1000*60*60*24)/1000/60/60);
  var minutes = Math.floor((distance-days*1000*60*60*24-hours*1000*60*60)/1000/60);
  var secounds = Math.floor((distance-days*1000*60*60*24-hours*1000*60*60-minutes*1000*60)/1000);
  return "距離除夕還有"+days+"天"+hours+"小時(shí)"+minutes+"分"+secounds+"秒";
}
var str = getIntv("2017-01-27");
console.log(str);

2贩猎,把數(shù)字日期改成中文日期

var str = getChsDate('2015-01-08');
console.log(str); // 二零一五年一月八日
  • 答案:
  function getChsDate(data){
  var array = data.split('-');
  var year = "";
  var hanzi = ['零','一','二','三','四','五','六','七','八','九'];
  for(i=0; i<4; i++){
    year += hanzi[array[0][i]];
  }
  function m_d(sth){
    if(sth.length==1){
      sth = "0"+sth;
    };
    if(sth[0]==0){
      return hanzi[sth[1]];
    };
    if(sth[0]==1){
      return "十" + hanzi[sth[1]];
    };
    if(sth[0]==2){
      return "二十" + hanzi[sth[1]];
    };
    if(sth[0]==3){
      if(sth[1]==0){
        return "三十";
      };
      return "三十"+ hanzi[sth[1]];
    }
  }
  return year+"年"+m_d(array[1])+"月"+m_d(array[2])+'日';
  }
  var str = getChsDate('2015-05-31');
  console.log(str);  // 二零一五年一月八日

另一種想法:

function getChsDate(data){
  var array = ['零','一','二','三','四','五','六','七','八','九'];
  dataArr = data.split('-').join('').split('');
  if(dataArr[4]=="0"){
    dataArr.splice(4,1);
  }else{
    return dataArr;
  };
  if(dataArr[dataArr.length-2]=="0"){
    dataArr.splice(length-2,1);
  }else{
    return dataArr;
  };
  console.log(dataArr)

  var result=[];
  for(i=0; i<9; i++){
    result.push(array[dataArr[i]]);
  }
  console.log(result)
  return result;
}
  • tip:

  • 字符串可以直接加上數(shù)組,得到字符串萍膛;

  • 字符串擁有長(zhǎng)度吭服,下標(biāo)等屬性;

3蝗罗,寫(xiě)一個(gè)函數(shù)獲取n天前的日期

var lastWeek = getLastNDays(7);
// ‘2016-01-08’
var lastMonth = getLastNDays(30); 
//'2015-12-15'
  • 答案:
function getLastNDays(data){
  var time1 = Date.now() - data*1000*60*60*24;
  var time2 = new Date(time1);
  return time2.getFullYear()+'-'+(time2.getMonth()+1)+'-'+time2.getDate();
}
var lastWeek = getLastNDays(7);
// ‘2016-01-08’
var lastMonth = getLastNDays(30);
//'2015-12-15'
console.log(lastWeek)
console.log(lastMonth)
  • 之前的想法:

4艇棕,完善如下代碼蝌戒,用于獲取執(zhí)行時(shí)間如:

var Runtime = (function(){
   //code here ... 
  var obj = { 
    start: function(){
    //code here ..., 當(dāng)前時(shí)間
     }, 
    end: function(){
     //code here ... 結(jié)束時(shí)間
     }, 
    get: function(){ 
    //code here ... 獲取執(zhí)行時(shí)間 
   } 
  };
return obj;
}());

Runtime.start();
//todo somethintRuntime.end();
console.log( Runtime.get() );
  • 答案:

5沼琉,樓梯有20級(jí)北苟,每次走1級(jí)或是2級(jí),從底走到頂一共有多少種走法打瘪?用代碼(遞歸)實(shí)現(xiàn)

6友鼻,寫(xiě)一個(gè)json對(duì)象深拷貝的方法,json對(duì)象可以多層嵌套闺骚,值可以是字符串彩扔、數(shù)字、布爾僻爽、json對(duì)象中的任意項(xiàng)(PS:嘗試另外一種方法 var obj2 = JSON.parse( JSON.stringify(obj1)

  • 答案:

7 實(shí)現(xiàn)n!

            var sum = 1;
            function recursion(n){
                if(n !== 1){
                    sum *= n *(n-1);
                    recursion(n-2);
                }else{
                    return sum;
                }
                return sum;
            }
            console.log(recursion(5))

JSON.parse用法及解析 鏈接點(diǎn)這里
JSON.stringify用法及解析 鏈接點(diǎn)這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虫碉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胸梆,更是在濱河造成了極大的恐慌敦捧,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乳绕,死亡現(xiàn)場(chǎng)離奇詭異绞惦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)洋措,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)济蝉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人菠发,你說(shuō)我怎么就攤上這事王滤。” “怎么了滓鸠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵雁乡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我糜俗,道長(zhǎng)踱稍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任悠抹,我火速辦了婚禮珠月,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楔敌。我一直安慰自己啤挎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布卵凑。 她就那樣靜靜地躺著庆聘,像睡著了一般胜臊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伙判,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天象对,我揣著相機(jī)與錄音,去河邊找鬼澳腹。 笑死织盼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的酱塔。 我是一名探鬼主播沥邻,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼羊娃!你這毒婦竟也來(lái)了唐全?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蕊玷,失蹤者是張志新(化名)和其女友劉穎邮利,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體垃帅,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡延届,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贸诚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片方庭。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖酱固,靈堂內(nèi)的尸體忽然破棺而出械念,到底是詐尸還是另有隱情,我是刑警寧澤运悲,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布龄减,位于F島的核電站,受9級(jí)特大地震影響班眯,放射性物質(zhì)發(fā)生泄漏希停。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一署隘、第九天 我趴在偏房一處隱蔽的房頂上張望脖苏。 院中可真熱鬧,春花似錦、人聲如沸变勇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宗弯。三九已至嘿棘,卻和暖如春汤求,著一層夾襖步出監(jiān)牢的瞬間畅哑,已是汗流浹背肴楷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荠呐,地道東北人赛蔫。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像泥张,于是被迫代替她去往敵國(guó)和親呵恢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,139評(píng)論 30 470
  • 從三月份找實(shí)習(xí)到現(xiàn)在媚创,面了一些公司渗钉,掛了不少,但最終還是拿到小米钞钙、百度鳄橘、阿里、京東芒炼、新浪瘫怜、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,240評(píng)論 11 349
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,516評(píng)論 1 51
  • 又是七年的獨(dú)自流浪 在鋪滿(mǎn)玫瑰花的舞臺(tái)上 莫名的渴望 又莫名的悵惘 他們的合唱 旋律 激...
    shijiandelv閱讀 406評(píng)論 0 4
  • (二) 和美國(guó)隊(duì)長(zhǎng)當(dāng)鄰居其實(shí)并不難本刽。他很尊重別人——也可能是依舊不適應(yīng)現(xiàn)代社會(huì)鲸湃,他從沒(méi)問(wèn)過(guò)Sharon的工作單位,...
    清朗然閱讀 577評(píng)論 0 0